nginx的配置相對簡單,總體來說分為5種模塊
- 全局塊:配置影響nginx全局的指令。一般有運行nginx服務器的用戶組,nginx進程pid存放路徑,日志存放路徑,配置文件引入,允許生成worker process數等。
- events塊:配置影響nginx服務器或與用戶的網絡連接。有每個進程的最大連接數,選取哪種事件驅動模型處理連接請求,是否允許同時接受多個網路連接,開啟多個網絡連接序列化等。
- http塊:可以嵌套多個server,配置代理,緩存,日志定義等絕大多數功能和第三方模塊的配置。如文件引入,mime-type定義,日志自定義,是否使用sendfile傳輸文件,連接超時時間,單連接請求數等。
- server塊:配置虛擬主機的相關參數,一個http中可以有多個server。
- location塊:配置請求的路由,以及各種頁面的處理情況。可以理解為路由規則配置。
常用配置及介紹
配置 | 說明 |
---|---|
全局塊 | |
user administrator administrators; | 配置用戶或者組,默認為nobody nobody |
worker_processes 4; | 允許生成的進程數,默認為1 |
pid /nginx/logs/nginx.pid; | 指定nginx進程運行文件存放地址 |
error_log log/error.log debug; | 制定日志路徑,級別。 這個設置可以放入全局塊,http塊,server塊, 級別依次為:debug | info | notice | warn | error | crit | alert | emerg |
events 塊 | |
accept_mutex on; | 設置網路連接序列化,防止驚群現象發生,默認為on |
multi_accept on; | 設置一個進程是否同時接受多個網絡連接,默認為off |
use epoll; | 事件驅動模型,select | poll | kqueue | epoll | resig | /dev/poll | eventport |
worker_connections 1024; | 最大連接數,默認為512 |
http塊 | |
include mime.types; | include:用來加載其他配置文件。 mime.types文件擴展名與文件類型映射表 |
default_type application/octet-stream; | 默認文件類型,默認為text/plain |
access_log off; | 開啟/取消服務日志 |
log_format formatName ‘格式模板’; | 日志自定義格式,參數說明 |
access_log logs/access.log formatName; | 日志存儲位置及格式,combined為日志格式的默認值 |
sendfile on; | 允許sendfile方式傳輸文件,默認為off, 可以在http塊,server塊,location塊。 |
sendfile_max_chunk 100k; | 每個進程每次調用傳輸數量不能大于設定的值,默認為0,即不設上限。 |
keepalive_timeout 65; | 連接超時時間,默認為75s,可以在http,server,location塊。 |
gzip on; | 是否開啟 |
error_page 404 error/404.html; | 配置錯誤頁面,可以在http,server,location塊。 |
server塊 | |
keepalive_requests 120; | 單連接請求上限次數。 |
listen 80; | 監聽http端口 |
listen 443 ssl; | 監聽https端口 |
server_name 127.0.0.1; | 監聽地址,可以是IP地址,也可以是域名, 可以同時配置多個地址,用空格隔開。 |
root E:/wwwroot/thinkphp5.1/public; | 網站根目錄,可以在server塊,location塊 |
index index.php index.html; | 設置默認頁,可以在server塊,location塊 |
deny 127.0.0.1; | 拒絕的ip |
allow 192.168.0.100; | 允許的ip |
location塊 | |
location [=|~|~*|^~] uri { … } | 方括號中的四種標識符是可選項,用來改變請求字符串和uri的匹配方式 uri是待匹配的請求字符串, 可以是不包含正則的字符串,這種模式被稱為“標準uri"; 也可以包含正則,這種模式被稱為"正則uri" |
日志格式參數
參數 | 說明 |
---|---|
$remote_addr $http_x_forwarded_for | 用以記錄客戶端的ip地址 |
$remote_user | 用來記錄客戶端用戶名稱 |
$time_local | 用來記錄訪問時間與時區 |
$request | 用來記錄請求的url與http協議 |
$status | 用來記錄請求狀態,成功是200 |
$body_bytes_sent | 記錄發送給客戶端文件主體內容大小 |
$http_referer | 用來記錄從那個頁面鏈接訪問過來的 |
$http_user_agent | 記錄客戶端瀏覽器的相關信息 |
location參數
標識符 | 說明 |
---|---|
= | 精確匹配:用于標準uri前,要求請求字符串和uri嚴格匹配。 如果匹配成功就停止匹配,立即執行該location里面的請求。 |
~ | 正則匹配:用于正則uri前,表示uri里面包含正則,并且區分大小寫。 |
~* | 正則匹配:用于正則uri前,表示uri里面包含正則,不區分大小寫。 |
^~ | 非正則匹配;用于標準uri前,nginx服務器匹配到前綴最多的uri后就結束, 該模式匹配成功后,不會使用正則匹配。 |
無 | 普通匹配(最長字符匹配);與location順序無關,是按照匹配的長短來取匹配結果。 若完全匹配,就停止匹配。 |