Nginx配置解析

nginx.conf配置文件

–#定義Nginx運行的用戶和用戶組

– user wwwwww;

 

–#nginx進程數,建議設置爲等於CPU總核心數。

–worker_processes 8;

 

–#全局錯誤日誌定義類型,[ debug | info | notice | warn | error | crit ]

– error_log/var/log/nginx/error.log info;

 

– #進程文件

– pid/var/run/nginx.pid;

 

–#一個nginx進程打開的最多文件描述符數目,理論值應該是最多打開文件數(系統的值

ulimit-n)與nginx進程數相除,但是nginx分配請求並不均勻,所以建議與ulimit -n的

值保持一致。

–worker_rlimit_nofile 65535;

 

#工作模式與連接數上限

• events

• {

• #參考事件模型,use [ kqueue |rtsig | epoll | /dev/poll | select | poll ];

epoll模型是Linux2.6以上版本內核中的高性能網絡I/O模型,如果跑在

FreeBSD上面,就用kqueue模型。

• use epoll;

 

• #單個進程最大連接數(最大連接數=連接數*進程數)

• worker_connections 65535;

• }

 

event下的一些配置及其意義

– #單個後臺worker process進程的最大併發鏈接數

–worker_connections 1024;

 

– # 併發總數是 worker_processes 和worker_connections 的乘積

– # 即 max_clients = worker_processes *worker_connections

– # 在設置了反向代理的情況下,max_clients =worker_processes *

worker_connections/ 4

– # 爲什麼上面反向代理要除以4,應該說是一個經驗值

– # 根據以上條件,正常情況下的Nginx Server可以應付的最大連接數爲:4 *8000 =32000,

– #worker_connections 值的設置跟物理內存大小有關,

– # 因爲併發受IO約束,max_clients的值須小於系統可以打開的最大文件數

– # 而系統可以打開的最大文件數和內存大小成正比,一般1GB內存的機器上可以打開的文件數大約是10萬左右

 

– # 我們來看看360M內存的VPS可以打開的文件句柄數是多少:

– # $ cat/proc/sys/fs/file-max

– # 輸出 34336

 

– # 32000< 34336,即併發連接總數小於系統可以打開的文件句柄總數,這樣就在操

作系統可以承受的範圍之內,

– # 所以,worker_connections 的值需根據worker_processes 進程數目和系統可以

打開的最大文件總數進行適當地進行設置

– #使得併發總數小於操作系統可以打開的最大文件數目

– # 其實質也就是根據主機的物理CPU和內存進行配置

– #當然,理論上的併發總數可能會和實際有所偏差,因爲主機還有其他的工作進程需

要消耗系統資源。

– # ulimit-SHn 65535

 

http下的一些配置及其意義

– #設定http服務器

– http

– {

– include mime.types; #文件擴展名與文件類型映射表

– default_type application/octet-stream; #默認文件類型

– #charset utf-8; #默認編碼

– server_names_hash_bucket_size 128; #服務器名字的hash表大小

– client_header_buffer_size 32k; #上傳文件大小限制

– large_client_header_buffers 4 64k; #設定請求緩

– client_max_body_size 8m; #設定請求緩

– sendfile on; #開啓高效文件傳輸模式,sendfile指令指定nginx是否調用sendfile函數來

輸出文件,對於普通應用設爲on,如果用來進行下載等應用磁盤IO重負載應用,可設置

off,以平衡磁盤與網絡I/O處理速度,降低系統的負載。注意:如果圖片顯示不正常

把這個改成off。

– autoindex on; #開啓目錄列表訪問,合適下載服務器,默認關閉。

– tcp_nopush on; #防止網絡阻塞

– tcp_nodelay on; #防止網絡阻塞

– keepalive_timeout 120; #長連接超時時間,單位是秒

}

 

gzip的一些配置及其意義

– #gzip模塊設置

gzip on; #開啓gzip壓縮輸出

gzip_min_length1k; #最小壓縮文件大小

gzip_buffers4 16k; #壓縮緩衝區

gzip_http_version 1.0; #壓縮版本(默認1.1,前端如果是squid2.5請使用1.0)

gzip_comp_level2; #壓縮等級

gzip_typestext/plain application/x-javascript text/css application/xml;

#壓縮類型,默認就已經包含text/html,所以下面就不用再寫了,寫上去也不會有問題

,但是會有一個warn。

gzip_varyon;

#limit_zone crawler $binary_remote_addr 10m; #開啓限制IP連接數的時候需要使用

 

虛擬主機一些配置及其意義

– #虛擬主機的配置

server

{

#監聽端口

listen 80;

#域名可以有多個,用空格隔開

server_name www.ha97.comha97.com;

index index.html index.htm index.jsp;

root /data/www/ha97;

location ~ .*\.(php|php5)?$

{

fastcgi_pass 127.0.0.1:9000;

fastcgi_index index.jsp;

include fastcgi.conf;

}

 

通過nginx可以實現虛擬主機的配置,nginx支持三種類型的

虛擬主機配置,

– 1、基於ip的虛擬主機, (一塊主機綁定多個ip地址)

– 2、基於域名的虛擬主機(servername)

– 3、基於端口的虛擬主機(listen如果不寫ip端口模式)

 

– 示例基於虛擬機ip的配置,這裏需要配置多個ip

– server

– {

– listen192.168.20.20:80;

–server_name www.linuxidc.com;

– root/data/www;

– }

– server

– {

– listen192.168.20.21:80;

–server_name www.linuxidc.com;

– root/data/www;

– }

 

nginx.conf下的配置

– http{

– server{

– #表示一個虛擬主機

– }

– }

 

location 映射(ngx_http_core_module)

– location[ = | ~ | ~* | ^~ ] uri { ... }

– locationURI {}:

–對當前路徑及子路徑下的所有對象都生效;

– location = URI {}: 注意URL最好爲具體路徑。

–精確匹配指定的路徑,不包括子路徑,因此,只對當前資源生效;

– location~ URI {}:

– location~* URI {}:

– 模式匹配URI,此處的URI可使用正則表達式,~區分字符大小寫,~*不區

分字符大小寫;

– location^~ URI {}:

– 不使用正則表達式

– 優先級:= > ^~ > ~|~* > /|/dir/

 

location配置規則

=前綴的指令嚴格匹配這個查詢。如果找到,停止搜索。

•所有剩下的常規字符串,最長的匹配。如果這個匹配使用^〜前綴,搜索停止。

• 正則表達式,在配置文件中定義的順序。

• 如果第3條規則產生匹配的話,結果被使用。否則,如同從第2條規則被使用

 

location的執行邏輯跟 location 的編輯順序無關。

矯正:這句話不全對,“ 普通 location ” 的匹配規則是“ 最大前綴” ,因此“ 普

location ” 的確與 location 編輯順序無關;但是“ 正則 location ” 的匹配規則是“ 順序

匹配,且只要匹配到第一個就停止後面的匹配” ;“ 普通location ” 與“ 正則 location ” 之

間的匹配順序是?先匹配普通 location ,再“ 考慮” 匹配正則 location 。注意這裏的“ 考

慮” 是“ 可能” 的意思,也就是說匹配完“ 普通 location ” 後,有的時候需要繼續匹配“ 正

location ” ,有的時候則不需要繼續匹配“ 正則 location ” 。兩種情況下,不需要繼續

匹配正則 location :( 1 )當普通 location 前面指定了“^~ ” ,特別告訴 Nginx 本條普

location 一旦匹配上,則不需要繼續正則匹配;( 2 )當普通location 恰好嚴格匹配上

,不是最大前綴匹配,則不再繼續匹配正則。

 

使用一種工具當對他的配置特別熟悉的時候就能更容易的使用它,讓它發揮最大的作用,也能在出現問題之前能及時考慮好各種情況,最好查漏補缺,所以掌握Nginx配置很重要哦,如果想學好Nginx,先了解他的配置吧。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章