以下備忘 nginx 中基礎配置的含義。在
/etc/nginx
中可以找到nginx.conf
配置檔案,其配置及注釋如下:
# 執行 nginx worker 程序的使用者群組為 nginx
user nginx;
# 工作程序的數量,一般與 cpu 的核數相關
worker_processes 1;
# 錯誤日誌的目錄。最後一項為錯誤日誌的級別
error_log /var/log/nginx/error.log warn;
# 儲存主程序的程序 id 的位置
pid /var/run/nginx.pid;
# 設定乙個工作程序可以連線的數量
events
http
有關錯誤日誌的級別可以參考:「nginx error_log 錯誤日誌級別」。
在nginx.conf
中包含乙個重要模組,其配置及注釋如下:
# --- nginx.conf ----
# 其他配置
http
該段配置中有一些比較重要的部分:
該檔案為/etc/nginx/mine.types
,表示針對不同檔案型別會返回給瀏覽器的content-type
頭部資訊,以下是該檔案的部分內容:
types
有關這一部分的詳細資訊可以檢視:「nginx -- mime.types」和「http content-type」。
該項配置了日誌記錄的格式,具體可以參考:「使用 log_format 為 nginx 伺服器設定更詳細的日誌格式」。
由於在nginx.conf
中存在下面這條配置,使得所有在該目錄下,檔名以.conf
結尾的檔案都會被當作配置檔案引入:
include /etc/nginx/conf.d/*.conf;
而在/etc/nginx/conf.d/
目錄下,提供了乙個default.conf
檔案,以下是該檔案部分內容及注釋:
# 每乙個 server 定義了乙個虛擬主機
server
在 server 模組中,location
是非常重要的配置項,我們可以使用它完成很多需求。
我更傾向於把它稱為路由匹配,即根據請求的型別**到相應的**中進行處理,和路由器根據路由表**資料報的過程很是相似。
server
# 其他配置
}
當然也可以使用正規表示式定義:
location ~* \.(jpg|jpeg|gif|png)$
該配置表示對類的靜態資源的**,其中\.(jpg|jpeg|gif|png)$
為正則內容;
~*
表示請求不區分大小寫,關於此類規則可以參考:「nginx location 匹配規則」。
我們還可以進行反向**配置:
location /api
在使用**後,如果想讓**後的伺服器得到的請求位址仍是真實的客戶,而不是**伺服器,則需要增加上述配置的下面兩行。有關這二者的區別和更為詳細的資訊可以分別參考:「x-forwarded-for 和 x-real-ip 的區別?」和「怎樣正確設定 remote_addr 和 x_forwarded_for」。
對於某些需要借助額外處理過程的檔案,nginx 需要將請求**給實現了 cgi 或 fastcgi 的程序進行處理。在 php 中即為 php-fpm:
location ~ \.php$
其中:fastcgi_pass
表示將該類請求**到哪個程序,這裡配置為127.0.0.1:9000
是因為php-fpm
預設監聽 9000 埠。
這裡的$document_root
和$fastcgi_script_name
分別表示 root 配置指定的位置及指令碼名稱。二者連起來即為指令碼檔案的請求路徑。詳細資訊可以參考「nginx 內建預定義變數」和「fastcgi_param 詳解 - csdn」。
include fastcgi_params
為引入/etc/nginx/fastcgi_params
檔案。
又稱為偽靜態,可以通過以下方式配置:
location /
一般位址重寫都是動態語言的需求,所以位址重寫配置往往和 fastcgi 配置一同出現。同路由表的匹配規則類似,請求的匹配大體上也遵循最長匹配,具體規則如下(引用自:nginx location 匹配規則):
= 字首的指令嚴格匹配這個查詢。如果找到,停止搜尋;在配置了所有剩下的常規字串,最長的匹配。如果這個匹配使用^〜字首,搜尋停止;
正規表示式,在配置檔案中定義的順序;
如果第 3 條規則產生匹配的話,結果被使用。否則,使用第2條規則的結果。
location /
後,由於所有請求都屬於這一格式。在沒有更為精確的匹配符合的情況下,會進入這一配置中,實際上相當於預設配置。
當然,我們也可以用以下方式配置乙個預設(預設)的 server:
server
使用default_server
標註其為預設 server。這裡也可以把root /default/root
改為root return 444
,表示當必須使用預設 server 時,直接返回 444 http 狀態碼。而又由於沒有這一狀態碼,瀏覽器中會直接顯示網頁無法正常工作
。
當訪問已正確配置的位址卻出現 403 錯誤時,有可能是 selinux 導致的。
先執行以下命令:
getenforce
如果出現enforcing
結果,則需要改變安全上下文:
chcon -rt httpd_sys_content_t /your/web/dir
詳細內容可以參考 「檢視 selinux 狀態及關閉 selinux」 和 「chcon 命令」。
檢視 selinux 狀態及關閉 selinux
chcon 命令
nginx error_log 錯誤日誌級別
使用 log_format 為 nginx 伺服器設定更詳細的日誌格式 -
nginx location 匹配規則
x-forwarded-for 和 x-real-ip 的區別? - segmentfault
怎樣正確設定 remote_addr 和 x_forwarded_for - csdn
nginx 內建預定義變數
fastcgi_param 詳解 - csdn
nginx:web 伺服器 - 寧皓網
ubuntu 16.04lts lnmp環境配置 -
備忘錄 Nginx配置檔案詳解
全域性設定 定義nginx執行的使用者和使用者組 user www www nginx程序數,建議設定為等於cpu總核心數。worker processes 2 全域性錯誤日誌定義型別,debug info notice warn error crit 在高併發情況下,通過設定cpu粘性來降低由於多...
nginx配置檔案
執行使用者 user nobody nobody 啟動程序 worker processes 2 全域性錯誤日誌及pid文件 error log logs error.log notice pid logs nginx.pid 工作模式及連線數上限 events 設定http伺服器,利用他的反向 功...
nginx 配置檔案
ps nginx使用有兩三年了,現在經常碰到有新使用者問一些很基本的問題,我也沒時間一一回答,今天下午花了點時間,結合自己的使用經驗,把nginx的主要配置引數說明分享一下,也參考了一些網路的內容,這篇是目前最完整的nginx配置引數中文說明了。更詳細的模組引數請參考 定義nginx執行的使用者和使...