NGINX配置文件學(xué)習(xí)筆記 Nginx 是一個(gè)很強(qiáng)大的高性能Web和反向代理服務(wù)器.
今天,本地服務(wù)無論如何也起不來,nginx的配置文件也看不懂,所以感覺很尷尬,于是拿出了一個(gè)小時(shí)的時(shí)間學(xué)習(xí)了一下NGINX的配置文件,現(xiàn)在做一下記錄. 打開原始的nginx.conf文件 其中user用來配置用戶或用戶組,如果不指定將會(huì)默認(rèn)為nobody, 配置該參數(shù)的意義在于: 在linux中所有的存在均可視為文件,其存在權(quán)限問題,通過user指定的用戶主要是指定其woker PRocess 權(quán)限, Woker_processes用來指定nginx的進(jìn)程數(shù),默認(rèn)值為1,我在一些資料上看到說建議設(shè)置為宿主機(jī)的cpu核心數(shù). 當(dāng)然如果我們的woker_processes設(shè)置的值為4,可以加上: Worker_cpu_affinity 0001 0010 0100 1000 這種方法可以將1-4進(jìn)程分配給單獨(dú)的核運(yùn)行,如果有第五個(gè)進(jìn)程,則隨機(jī)分配. Woker_rlimit_nofile 4096 設(shè)置每一個(gè)進(jìn)程的最大文件打開數(shù),一般設(shè)置為進(jìn)程最大連接數(shù)(woker_connections)的3-4倍即可.
這一塊用來定義全局的錯(cuò)誤日志,日志的級(jí)別分為:[debug | info | notice | warn | error | crit ], 當(dāng)然,一般情況下如果沒有特殊需求,使用默認(rèn)即可.
pid屬性用來定義nginx進(jìn)程文件存放的位置,一般使用默認(rèn)即可.
Events模塊: 其中worker_connections定義了工作進(jìn)程的最大連接數(shù)量,該值不能超過Woker_rlimit_nofile.
在理論上: 每臺(tái)nginx服務(wù)器的最大連接數(shù)=worker_processes*worker_connections; 當(dāng)然events還有其他參數(shù): Accept_mutex on:設(shè)置網(wǎng)絡(luò)連接序列化,防止驚群現(xiàn)象發(fā)生,該值默認(rèn)為on. 驚群現(xiàn)象:http://www.tuicool.com/articles/Nbue2a 其原理為: 設(shè)置為ON以后,每個(gè)工作線程(worker)按串行的方式來處理連接,一個(gè)連接只會(huì)喚醒一個(gè)工作線程,其余線程繼續(xù)休眠,但是如果服務(wù)器吞吐量較大時(shí),建立關(guān)閉該參數(shù). http塊:設(shè)定http服務(wù)器,利用他的反向代理功能提供負(fù)載均衡支持. HTTP塊可以嵌套多個(gè)server,配置緩存代理,第三方模塊等. Include mime.types 定義MIME類型和后綴關(guān)聯(lián)的文件的位置.該文件處于nginx.conf同級(jí)目錄下.
其中部分內(nèi)容如下:
Default_type application/actet-stream; 指定在mime.type文件中沒有定義到的后綴名處理方法,默認(rèn)值為 text/plain. Sendfile on :表示是否使用OS的sendfile函數(shù)來傳輸文件,普通的應(yīng)用建議設(shè)置為ON,IO負(fù)載重的應(yīng)設(shè)為OFF,默認(rèn)值為OFF. Tcp_nopush on: 如果sendfile設(shè)置為on,此處應(yīng)該也設(shè)置為on,數(shù)據(jù)包會(huì)累積一下,再一起傳輸,可是適當(dāng)?shù)奶岣咭恍┬? Tcp_nodelay on 默認(rèn)值為on小的數(shù)據(jù) 包不等待直接發(fā)送,其默認(rèn)值為ON,當(dāng)和tcp_nopush同時(shí)都為ON時(shí),nginx會(huì)平衡這兩個(gè)功能. Keepalive_timeout 120; 設(shè)置長連接超時(shí)時(shí)間,注意此處單位為秒. Gzip on; 開啟gzip壓縮輸出. Gzip_min_length 1k; 最小壓縮文件大小 Gzip_buffers 4 16k; 壓縮緩沖區(qū) Gzip_http_version 1.0; 壓縮版本,默認(rèn)為1.1,但是如果前端是squid2.5請(qǐng)使用1.0. Gzip_comp_level 2; 壓縮等級(jí) Gzip_type text/plain application/x-javascript text/CSS application/xml; 壓縮類型,默認(rèn)包含text/html. Gzip_vary on; 可以使用upstream子模塊進(jìn)行負(fù)載均衡服務(wù)器的定義. 格式為 upstream 服務(wù)名稱{ Server IP+端口; } 當(dāng)然,一個(gè)upstream模塊,可以配置多個(gè)IP地址. 格式為: Upstream 服務(wù)名稱{ Server IP 地址+prot weight=3; Server IP 地址+prot weight=1; Server IP 地址+prot weight=2; } 這里的weight的值代表分配給所屬IP服務(wù)器的權(quán)重,該值將影響服務(wù)器的分配幾率;
Server模塊,虛擬主機(jī)的配置 在server模塊下: Listen 80; 表示將監(jiān)聽80端口. Server_name wwwbaidu.com www.52panda.online;表示監(jiān)聽的域名,域名可以有多個(gè),中間使用空格隔開,域名可以使用正則匹配. Charset utf-8;設(shè)置訪問的語言編碼. Location { ##設(shè)置虛擬主機(jī)的基本信息 Root 目錄; 設(shè)置虛擬主機(jī)的網(wǎng)站根目錄 Index a.html b.php;設(shè)置虛擬主機(jī)默認(rèn)訪問的網(wǎng)頁.
}
對(duì)/啟用反向代理. Proxy_pass 自定義的upstream名稱; 表示將使用該upstream提供服務(wù).
worker_processes 1;##允許生成的進(jìn)程數(shù)
error_log logs/error.log; ##錯(cuò)誤日志 error_log logs/notice.log notice; ##通知日志 error_log logs/info.log info; ##提示日志 error_log logs/warn.log warn; ##告警日志 error_log logs/crit.log crit; error_log logs/alert.log alert; error_log logs/emerg.log emerg; error_log logs/debug.log debug;
events { worker_connections 1024; ##配置最大連接數(shù) }
http { include mime.types; ##文件擴(kuò)展名與文件類型映射表 default_type application/octet-stream; ##默認(rèn)文件類型 ##自定義日志格式 log_format myLogFormat ‘
upstream 名稱 { ##該名稱對(duì)應(yīng)server的location的proxy_pass server 127.0.0.1:8080; }
## 服務(wù)配置server { listen 80; ##監(jiān)聽端口 server_name 域名; ##監(jiān)聽地址
location 正則 { ##匹配滿足正則的請(qǐng)求進(jìn)行下面處理 proxy_pass upstream 的名稱; proxy_redirect off ; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_set_header REMOTE-HOST $remote_addr; }}}
新聞熱點(diǎn)
疑難解答
圖片精選