Nginx 配置檔案備忘

2021-09-16 21:43:44 字數 3757 閱讀 3083

以下備忘 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執行的使用者和使...