1. 程式人生 > >nginx.conf配置檔案解析(http、server、location)

nginx.conf配置檔案解析(http、server、location)

nginx.conf檔案在安裝目錄/conf目錄下

1、定義Nginx執行的使用者和使用者組

user nginx nginx;

2、nginx程序數,建議設定為等於CPU總核心數

worker_processes 1;

3、全域性錯誤日誌定義型別,[ debug | info | notice | warn | error | crit ]

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

4、程序檔案

pid /var/run/nginx.pid;

5、工作模式與連線數上限:worker_connections是單個後臺worker process程序的最大併發連結數,併發總數是 worker_processes 和 worker_connections 的乘積, 即 max_clients = worker_processes * worker_connections

events {
    worker_connections  1024;
}

6、http下的一些配置及其意義

include       mime.types; #副檔名與檔案型別對映表
default_type  application/octet-stream; #預設檔案型別
sendfile on; #開啟高效檔案傳輸模式,sendfile指令指定nginx是否呼叫sendfile函式來 輸出檔案,對於普通應用設為 on,如果用來進行下載等應用磁碟IO重負載應用,可設定 為off,以平衡磁碟與網路I/O處理速度,降低系統的負載。注意:如果圖片顯示不正常 把這個改成off。 autoindex on; #開啟目錄列表訪問,合適下載伺服器,預設關閉。 tcp_nopush on; #防止網路阻塞 tcp_nodelay on; #防止網路阻塞 keepalive_timeout 120; #長連線超時時間,單位是秒 gzip on; #開啟gzip壓縮輸出

7、server虛擬主機一些配置及其意義
這裡寫圖片描述


例如:

http{
 #虛擬主機1
 server{
  listen       80;
  server_name  www.nginx1.com;
  location / {
     root   html;
     index  index.html index.htm;
  }
 }

 #虛擬主機2
 server{
  listen       80;
  server_name  localhost;
  location / {
     root   html;
     index  index.html index.htm;
  }
 }
}

這裡server_name配置域名的時候,如果是本地測試,需要到windos下hosts檔案裡,把你的域名和ip新增進去(C:\Windows\System32\drivers\etc\hosts)

nginx支援三種類型的 虛擬主機配置

  • 1、基於ip的虛擬主機, (一塊主機繫結多個ip地址)
server{
  listen       192.168.1.1:80;
  server_name  localhost;
}
server{
  listen       192.168.1.2:80;
  server_name  localhost;
}
  • 2、基於域名的虛擬主機(servername)
#域名可以有多個,用空格隔開
server{
  listen       80;
  server_name  www.nginx1.com www.nginx2.com;
}
server{
  listen       80;
  server_name  www.nginx3.com;
}
  • 3、基於埠的虛擬主機(listen不寫ip的埠模式)
server{
  listen       80;
  server_name  localhost;
}
server{
  listen       81;
  server_name  localhost;
}

server下的location對映解析(官方中文文件:ngx_http_core_module)匹配規則:location [ = | ~ | ~* | ^~ ] uri { ... }

location URI {}:

對當前路徑及子路徑下的所有物件都生效;

location = URI {}:

精確匹配指定的路徑(注意URL最好為具體路徑),不包括子路徑,因此,只對當前資源生效;

location ~ URI {}:

location ~* URI {}:

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

location ^~ URI {}:

不再檢查正則表示式

優先順序:= > ^~ > ~|~* > /|/dir/

舉例:

location = / {
    [ configuration A ]
}

location / {
    [ configuration B ]
}

location /documents/ {
    [ configuration C ]
}

location ^~ /images/ {
    [ configuration D ]
}

location ~* \.(gif|jpg|jpeg)$ { 
    [ configuration E ] 
} 

解答:請求“/”匹配配置A, 請求“/index.html”匹配配置B, 請求“/documents/document.html”匹配配置C, 請求“/images/1.gif”匹配配置D, 請求“/documents/1.jpg”匹配配置E

location配置規則

1、“ =”字首的指令嚴格匹配這個查詢。如果找到,停止搜尋。
2、所有剩下的常規字串,匹配最精確的(一般最長的那個)。如果這個匹配使用^〜字首,搜尋停止。
3、正則表示式,在配置檔案中是從上往下匹配的
4、如果第3條規則產生匹配的話,結果被使用。否則,如同從第2條規則被使用
特殊情況:
兩種情況下,不需要繼續匹配正則 location :
( 1 ) 當普通 location 前面指定了“ ^~ ”,特別告訴 Nginx 本條普 通 location 一旦匹配上,則不需要繼續正則匹配。
( 2 ) 當普通location 恰好嚴格匹配上 ,不是最大字首匹配,則不再繼續匹配正則