Nginx从入门到精通
目錄
- Nginx介紹
- 一、Nginx介紹
- 二、為什么選擇Nginx
- 三、Nginx和Apache對(duì)比
- Nginx安裝部署
- 一、nginx源碼下載
- 二、nginx安裝
- 三、nginx相關(guān)目錄
- 四、nginx啟動(dòng)管理
- 五、nginx啟動(dòng)測(cè)試
- 默認(rèn)網(wǎng)站
- 一、默認(rèn)網(wǎng)站
- 二、訪問(wèn)控制
- 三、登陸驗(yàn)證
- 四、日志管理
- 五、防盜鏈
- 虛擬主機(jī)
- 一、虛擬主機(jī)介紹
- 二、基于IP的虛擬主機(jī)
- 基于IP的虛擬主機(jī)特點(diǎn)
- 三、基于端口的虛擬主機(jī)
- 基于端口的虛擬主機(jī)特點(diǎn)
- 四、基于域名的虛擬主機(jī)
- 基于域名的虛擬主機(jī)特點(diǎn)
Nginx介紹
一、Nginx介紹
Nginx(“engine x”)是一款是由俄羅斯的程序設(shè)計(jì)師Igor Sysoev所開(kāi)發(fā)高性能的 Web和 反向代理服務(wù)器,也是一個(gè) IMAP/POP3/SMTP 代理服務(wù)器。和apache一樣,都是web服務(wù)器軟件,因?yàn)槠湫阅軆?yōu)異,所以被廣大運(yùn)維喜歡。又因?yàn)閚ginx是一個(gè)輕量級(jí)的web服務(wù)器,相比apache來(lái)說(shuō)資源消耗更低。
延伸版本:tengine(淘寶)、openresrt(章亦春)等
- http://nginx.org 官網(wǎng)
- http://www.nginx.cn/doc/index.html 中文文檔
二、為什么選擇Nginx
Nginx 是一個(gè)高性能的 Web 和反向代理服務(wù)器, 它具有有很多非常優(yōu)越的特性:
作為 Web 服務(wù)器:相比 Apache,Nginx 使用更少的資源,支持更多的并發(fā)連接,體現(xiàn)更高的效率,這點(diǎn)使 Nginx 尤其受到虛擬主機(jī)提供商的歡迎。能夠支持高達(dá) 50,000 個(gè)并發(fā)連接數(shù)的響應(yīng),感謝 Nginx 為我們選擇了 epoll and kqueue 作為開(kāi)發(fā)模型.
作為負(fù)載均衡服務(wù)器:Nginx 既可以在內(nèi)部直接支持 Rails 和 PHP,也可以支持作為 HTTP代理服務(wù)器 對(duì)外進(jìn)行服務(wù)。Nginx 用 C 編寫(xiě), 不論是系統(tǒng)資源開(kāi)銷還是 CPU 使用效率都比 Perlbal 要好的多。
作為郵件代理服務(wù)器: Nginx 同時(shí)也是一個(gè)非常優(yōu)秀的郵件代理服務(wù)器(最早開(kāi)發(fā)這個(gè)產(chǎn)品的目的之一也是作為郵件代理服務(wù)器),Last.fm 描述了成功并且美妙的使用經(jīng)驗(yàn)。
Nginx 安裝非常的簡(jiǎn)單,配置文件 非常簡(jiǎn)潔(還能夠支持perl語(yǔ)法),Bugs非常少的服務(wù)器: Nginx 啟動(dòng)特別容易,并且?guī)缀蹩梢宰龅?*24不間斷運(yùn)行,即使運(yùn)行數(shù)個(gè)月也不需要重新啟動(dòng)。你還能夠在 不間斷服務(wù)的情況下進(jìn)行軟件版本的升級(jí)。
三、Nginx和Apache對(duì)比
- 靜態(tài)文件處理能力:nginx高于apache
- 資源消耗:nginx優(yōu)于apache,因?yàn)閚ginx是異步處理模型,只需要幾個(gè)進(jìn)程就能夠處理大量在線請(qǐng)求,而apache 2.4仍然是進(jìn)程模型或者線程模型,即仍然采用大量線程來(lái)處理大量在線請(qǐng)求。
- Apache支持的模塊很多,而且也比較穩(wěn)定。而nginx由于出現(xiàn)的比較晚,所以在這方面可能比不上Apache。
- nginx本身就是一個(gè)反向代理服務(wù)器,而且支持7層負(fù)載均衡。
- nginx處理動(dòng)態(tài)頁(yè)面很雞肋,一般只用與處理靜態(tài)頁(yè)面和反向代理。
Nginx安裝部署
一、nginx源碼下載
官網(wǎng):http://nginx.org/
源碼包:nginx-1.19.3.tar.gz
源碼包下載:wget http://nginx.org/download/nginx-1.19.3.tar.gz -P /usr/src
二、nginx安裝
2.1、下載nginx源碼包 [root@zutuanxue ~]# wget http://nginx.org/download/nginx-1.19.3.tar.gz -P /usr/src [root@zutuanxue src]# cd /usr/src2.2、安裝nginx依賴包 [root@zutuanxue ~]# yum -y install gcc pcre-devel zlib-devel- gcc: 源碼編譯工具 - pcre-devel: nginx url_rewrite 功能提供包 - zlib-devel: nginx 壓縮功能提供包 2.3、解壓nginx源碼,并進(jìn)入源碼包 [root@zutuanxue src]# tar xf nginx-1.19.3.tar.gz [root@zutuanxue src]# cd nginx-1.19.32.4、配置nginx源碼[root@zutuanxue nginx-1.19.3]# ./configure --prefix=/usr/local/nginx配置目的:1)檢查環(huán)境 是否 滿足安裝條件 依賴解決2)指定安裝方式 配置文件 命令文件 各種文件放哪里 開(kāi)啟模塊功能【內(nèi)置模塊 三方模塊】3)指定軟件安裝在那里2.5、編譯nginx源碼 [root@zutuanxue nginx-1.19.3]# make -j42.6、安裝nginx [root@zutuanxue nginx-1.19.3]# make install三、nginx相關(guān)目錄
nginx path prefix: “/usr/local/nginx”nginx binary file: “/usr/local/nginx/sbin/nginx”nginx modules path: “/usr/local/nginx/modules”nginx configuration prefix: “/usr/local/nginx/conf”nginx configuration file: “/usr/local/nginx/conf/nginx.conf”nginx pid file: “/usr/local/nginx/logs/nginx.pid”nginx error log file: “/usr/local/nginx/logs/error.log”nginx http access log file: “/usr/local/nginx/logs/access.log”四、nginx啟動(dòng)管理
配置文件測(cè)試:/usr/local/nginx/sbin/nginx -t
Nginx啟動(dòng):/usr/local/nginx/sbin/nginx
Nginx關(guān)閉:killall –s QUIT nginx
五、nginx啟動(dòng)測(cè)試
nginx安裝完畢,接下來(lái)就可以啟動(dòng)nginx了,nginx啟動(dòng)后如何測(cè)試nginx的啟動(dòng)狀態(tài)呢?可以通過(guò)以下三種方式去測(cè)試,這個(gè)可以根據(jù)自己的習(xí)慣選擇一種測(cè)試就行了。
- 使用netsata命令查看啟動(dòng)端口
[root@zutuanxue ~]# netstat –ntpl - 使用losf命令查看啟動(dòng)端口
[root@zutuanxue ~]# lsof -i :80 - 使用文本瀏覽器訪問(wèn)nginx默認(rèn)網(wǎng)站
[root@zutuanxue ~]# elinks http://IP
測(cè)試內(nèi)容:
默認(rèn)網(wǎng)站
一、默認(rèn)網(wǎng)站
server {listen 80;server_name localhost;location / {root html;index index.html index.htm;#支持目錄瀏覽autoindex on;}error_page 500 502 503 504 /50x.html;location = /50x.html {root html;}}二、訪問(wèn)控制
location /a {autoindex on;allow 192.168.12.0/24;deny all;#基于客戶端IP做過(guò)濾,符合條件的允許訪問(wèn),不符合的返回404;if ( $remote_addr !~ "192.168.12" ) {#return 404;return http://book.ayitula.com;}}三、登陸驗(yàn)證
location /c {auth_basic "登陸驗(yàn)證";auth_basic_user_file /etc/nginx/htpasswd;}四、日志管理
Nginx訪問(wèn)日志主要有兩個(gè)參數(shù)控制
log_format #用來(lái)定義記錄日志的格式(可以定義多種日志格式,取不同名字即可)
access_log #用來(lái)指定日至文件的路徑及使用的何種日志格式記錄日志
access_log logs/access.log main;
log_format格式變量:$remote_addr #記錄訪問(wèn)網(wǎng)站的客戶端地址$remote_user #遠(yuǎn)程客戶端用戶名$time_local #記錄訪問(wèn)時(shí)間與時(shí)區(qū)$request #用戶的http請(qǐng)求起始行信息$status #http狀態(tài)碼,記錄請(qǐng)求返回的狀態(tài)碼,例如:200、301、404等$body_bytes_sent #服務(wù)器發(fā)送給客戶端的響應(yīng)body字節(jié)數(shù)$http_referer #記錄此次請(qǐng)求是從哪個(gè)連接訪問(wèn)過(guò)來(lái)的,可以根據(jù)該參數(shù)進(jìn)行防盜鏈設(shè)置。$http_user_agent #記錄客戶端訪問(wèn)信息,例如:瀏覽器、手機(jī)客戶端等$http_x_forwarded_for #當(dāng)前端有代理服務(wù)器時(shí),設(shè)置web節(jié)點(diǎn)記錄客戶端地址的配置,此參數(shù)生效的前提是代理服務(wù)器也要進(jìn)行相關(guān)的x_forwarded_for設(shè)置自定義一個(gè)json格式的訪問(wèn)日志
log_format main_json '{"@timestamp":"$time_local",' '"client_ip": "$remote_addr",' '"request": "$request",' '"status": "$status",' '"bytes": "$body_bytes_sent",' '"x_forwarded": "$http_x_forwarded_for",' '"referer": "$http_referer"' '}'; access_log logs/access_json.log main_json;日志截?cái)?/strong>
mv access.log access.log.0killall -USR1 \`cat master.nginx.pid\`sleep 1gzip access.log.0五、防盜鏈
location /images/ { alias /data/images/; valid_referers none blocked *.ayitula.com;if ($invalid_referer) {rewrite ^/ http://www.ayitula.com/daolian.gif;#return 403;} }虛擬主機(jī)
一、虛擬主機(jī)介紹
虛擬主機(jī) 就是把一臺(tái)物理服務(wù)器劃分成多個(gè)“虛擬”的服務(wù)器,每一個(gè)虛擬主機(jī)都可以有獨(dú)立的域名和獨(dú)立的目錄,可以獨(dú)立發(fā)布一個(gè)網(wǎng)站。
實(shí)驗(yàn)案例: 同時(shí)發(fā)布兩個(gè)網(wǎng)站:
- DocumentRoot /usr/local/nginx/html/web1
- DocumentRoot /usr/local/nginx/html/web2
二、基于IP的虛擬主機(jī)
應(yīng)用場(chǎng)景:IP充足的環(huán)境,每個(gè)網(wǎng)站需要一個(gè)IP地址
server {listen 192.168.11.251:80;location / {root html/web1;index index.html index.htm index.php;} } server {listen 192.168.11.252:80; location / {root html/web2;index index.html index.htm;} }基于IP的虛擬主機(jī)特點(diǎn)
- 不同IP對(duì)應(yīng)不同網(wǎng)站
- 訪問(wèn)方便,用戶直接使用默認(rèn)端口即可訪問(wèn)
- 服務(wù)器需要有多個(gè)IP地址(一個(gè)公網(wǎng)IP大概一年的費(fèi)用是600左右)
- 維護(hù)方便,基于獨(dú)立IP的站點(diǎn),便于監(jiān)控、維護(hù)。
三、基于端口的虛擬主機(jī)
應(yīng)用場(chǎng)景:IP不足的環(huán)境
- 優(yōu)點(diǎn): 多個(gè)網(wǎng)站發(fā)布使用該配置方法只需要一個(gè)IP,節(jié)省IP地址
- 缺點(diǎn) 端口你是無(wú)法告訴公網(wǎng)用戶,無(wú)法適用于公網(wǎng)客戶,適合內(nèi)部用戶
基于端口的虛擬主機(jī)特點(diǎn)
- 不同端口對(duì)應(yīng)不同網(wǎng)站
- 訪問(wèn)需要加端口
- 節(jié)省IP地址
- 適合私網(wǎng)運(yùn)行
四、基于域名的虛擬主機(jī)
應(yīng)用場(chǎng)景:一個(gè)網(wǎng)站需要有一個(gè)域名,目前公網(wǎng)發(fā)布網(wǎng)站的首選
基于域名 server {listen 80;server_name web1.zutuanxue.com;location / {root html/web1;index index.html index.htm index.php;} }server {listen 80;server_name web2.zutuanxue.com;location / {root html/web2;index index.html index.htm;} }基于域名的虛擬主機(jī)特點(diǎn)
- 不同域名對(duì)應(yīng)不同網(wǎng)站
- 需要多個(gè)域名 可以是二級(jí)或三級(jí)域名
- 每個(gè)站點(diǎn)使用默認(rèn)端口,方便用戶訪問(wèn)
- 只需要一個(gè)IP地址,節(jié)約成本
- 適合公網(wǎng)環(huán)境
總結(jié)
以上是生活随笔為你收集整理的Nginx从入门到精通的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 40天python入门教程_Python
- 下一篇: MySQL 常用内置函数