已經接觸nginx有至關一段時間,對nginx的各個模塊配置都有必定的瞭解,但從未具體的進行整理,每次用時都須要去查找相關資料,所以開此篇進行具體彙總下nginx的相關使用配置以及遇到的問題php
1、nginx配置文件簡介:css
nginx配置文件主要分爲5個模塊:一、全局塊,二、event塊,三、http塊,四、server快,五、location塊。以下所示:html
;全局塊 events { ... } http { server { location { .... } location { .... } } server { location { .... } location { .... } } }
一、1:全局塊相關配置:nginx
配置運行nginx的用戶,只有被設置的用戶和用戶組成員才能夠操做nginx,nginx默認用戶和用戶組爲nobody(所有用戶均可以操做)。配置信息以下正則表達式
user nginx後端
group nginxtomcat
配置nginx的worker_process數:服務器
worker_processes number|auto; //number nginx可最多產生的worker_process數 auto,nginx自動檢測網絡
配置nginx的pid存放路徑:app
pid file; //file pid存放路徑
配置錯誤日誌的路徑:
error_log file| stderr[ debug | info | notice | warn | error | crit | alert | emerg ]; //錯誤日誌路徑
error_log /tmp/logs/nginx_error.log error
一、2:events配置:
設置是否能夠同時接收多個網絡鏈接
multi_accept on|off
設置事件驅動模型的選擇
use method | [select, poll, epoll, kqueue,eventport等]
配置最大連接數
worker_connections number //每一個worker process同時開啓的最大鏈接數
一、3:http配置:
定義MIME-Type
include mime-types;
default_type application/octet-stream;
配置access_log以及log_format
access_log path //path訪問日誌路徑
log_format name string //string具體查看nginx示例
配置sendfile方式傳輸文件
sendfile on | off
sendfile_max_chunk size; //設置每次傳輸的數據的大小,不設置則表示無限制 , 例:sendfile_max_chunk_size 128k
配置超時時間
keepalive_timeout timeout
keepalive_requests number //單鏈接請求上線,默認100
1.4 :server配置:
配置網絡監聽:
此處經過事例描述,以下:
listen ip:port; 監聽具體的ip和具體的端口
listen ip; 監聽具體的ip
listen port; 監聽端口上的全部ip,等同於listen *:8000
虛擬主機配置:
server_name name name2 //name可以使用正則表達式,匹配優先級:①準確匹配 ②通配符在開始時匹配 ③通配符在結尾時匹配 ④正則表達式匹配成功 注:從nginx-0.0.40開始支持正則表達式字符串捕獲功能。例如:server_name ~^www\.(.+)\.com$; ()中的將被捕獲並記錄到$1中,在server中可以使用$1來表示捕獲到的數據
server_name ip; //server_name支持基於ip配置虛擬主機
root path; //path,根目錄
1.5 :location配置:
location [ = | ~ | ~* | ^~ ] url {...}
url表示待匹配的字符串,能夠包含正則表達式,不包含正則表達式的意味標準url
[]中的表示可選項;詳解以下:
= ,用於標準url前,要求字符串與url嚴格匹配
~ ,用於表示url包含正則表達式,而且區分大小寫
~*,用於表示url包含正則表達式,而且不區分大小寫
^~,用於標磚url前,要求服務器找到的url和請求字符串的匹配度最高的location後,當即使用此location處理,而再也不使用location快中的正則url和請求字符串作匹配
例如:
首先匹配 =,其次匹配^~, 其次是按文件中順序的正則匹配,最後是交給 / 通用匹配。當有匹配成功時候,中止匹配,按當前匹配規則處理請求。 例子,有以下匹配規則: location = / { #規則A } location = /login { #規則B } location ^~ /static/ { #規則C } location ~ \.(gif|jpg|png|js|css)$ { #規則D } location ~* \.png$ { #規則E } location !~ \.xhtml$ { #規則F } location !~* \.xhtml$ { #規則G } location / { #規則H } 那麼產生的效果以下: 訪問根目錄/, 好比http://localhost/ 將匹配規則A 訪問 http://localhost/login 將匹配規則B,http://localhost/register 則匹配規則H 訪問 http://localhost/static/a.html 將匹配規則C 訪問 http://localhost/a.gif, http://localhost/b.jpg 將匹配規則D和規則E,可是規則D順序優先,規則E不起做用,而 http://localhost/static/c.png 則優先匹配到規則C 訪問 http://localhost/a.PNG 則匹配規則E,而不會匹配規則D,由於規則E不區分大小寫。 訪問 http://localhost/a.xhtml 不會匹配規則F和規則G,http://localhost/a.XHTML不會匹配規則G,由於不區分大小寫。規則F,規則G屬於排除法,符合匹配規則可是不會匹配到,因此想一想看實際應用中哪裏會用到。 訪問 http://localhost/category/id/1111 則最終匹配到規則H,由於以上規則都不匹配,這個時候應該是nginx轉發請求給後端應用服務器,好比FastCGI(php),tomcat(jsp),nginx做爲方向代理服務器存在。
設置網站的默認首頁
index index.$1.html index.html index.php;
設置網站的錯誤頁面
error_page code [response] url //code錯誤碼 response 重定義的錯誤碼 url,錯誤頁面的路徑和網站地址