-
全局塊
該部分配置主要影響Nginx全局,通常包括下面幾個部分:
配置運行Nginx服務器用戶(組)
worker process數
Nginx進程PID存放路徑
錯誤日誌的存放路徑
配置文件的引入 -
events塊
該部分配置主要影響Nginx服務器與用戶的網絡連接,主要包括:
設置網絡連接的序列化
是否允許同時接收多個網絡連接
事件驅動模型的選擇
最大連接數的配置 -
http塊
定義MIMI-Type
自定義服務日誌
允許sendfile方式傳輸文件
連接超時時間
單連接請求數上限 -
server塊
配置網絡監聽
基於名稱的虛擬主機配置
基於IP的虛擬主機配置 -
location塊
location配置
請求根目錄配置
更改location的URI
網站默認首頁配置
配置網絡監聽
指令格式:
第一種:配置監聽的IP地址:listen IP[:PORT];
第二種:配置監聽的端口:listen PORT;
實際舉例:
listen 192.168.50.250:8080; #監聽具體IP和端口上的鏈接
listen 192.168.50.250; #監聽IP上多有端口的鏈接
listen 8080; #監聽具體端口上的所有IP的鏈接
基於名稱和IP的虛擬主機配置
指令格式:server_name name1 name2 …
name可以有多個並列名稱,而且此處的name支持正則表達式書寫
實際舉例:
server_name ~^www\d+\.myserver\.com$
此時表示該虛擬主機可以接收類似域名 www1.myserver.com 等的請求而拒絕 www.myserver.com 的域名請求,所以說用正則表達式可以實現更精準的控制
至於基於IP的虛擬主機配置比較簡單,不再太贅述:
指令格式:server_name IP地址
location配置
指令格式爲:location [ = | ~ | ~* | ^~ ] uri {…}
這裏的uri分爲標準uri和正則uri,兩者的唯一區別是uri中是否包含正則表達式
uri前面的方括號中的內容是可選項,解釋如下:
“=”:用於標準uri前,要求請求字符串與uri嚴格匹配,一旦匹配成功則停止
“~”:用於正則uri前,並且區分大小寫
“~*”:用於正則uri前,但不區分大小寫
“^~”:用於標準uri前,要求Nginx找到標識uri和請求字符串匹配度最高的location後,立即使用此location處理請求,而不再使用location塊中的正則uri和請求字符串做匹配
實例服務器上配置了一個網站,一個nexus服務,server部分如下
#gzip on;
server {
listen 80;
server_name mini-like.com; #
location /examples/ {
proxy_pass http://127.0.0.1:8080/examples/;
proxy_set_header Host $host:80;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location / {
proxy_pass http://127.0.0.1:8080/examples/;
proxy_set_header Host $host:80;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
server {
listen 80;
server_name mini-like.net;
location /docs {
proxy_pass http://127.0.0.1:8080/docs;
proxy_set_header Host $host:80;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location / {
proxy_pass http://127.0.0.1:8080/docs;
proxy_set_header Host $host:80;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
server {
listen 80;
server_name mini-like.com.cn;
location / {
proxy_pass http://182.92.238.98/;
proxy_set_header Host $host:80;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}