Nginx組態檔案


NGINX與其他服務類似,因為它具有以特定格式編寫的基於文字的組態檔案。 預設情況下,檔案名為nginx.conf並放在/etc/nginx目錄中(對於開源NGINX產品,位置取決於用於安裝NGINX和作業系統的軟體包系統,它通常位於/usr/local/nginx/conf/etc/nginx/usr/local/etc/nginx。)

組態檔案由指令及其引數組成。 簡單(單行)指令各自以分號結尾。 其他指令作為「容器」,將相關指令組合在一起,將其包圍在花括號({})中。 以下是簡單指令的一些範例。

user             nobody;
error_log        logs/error.log notice;
worker_processes 1;

為了使組態更易於維護,建議您將其拆分為儲存在/etc/nginx/conf.d目錄中的一組功能特定檔案,並在主nginx.conf檔案中使用include指令參照(包函)指定檔案的內容。如下所示 -

include conf.d/http;
include conf.d/stream;
include conf.d/exchange-enhanced;

幾個頂級指令(稱為上下文)將適用於不同流量型別的指令組合在一起:

  • events – 一般連線處理
  • http – HTTP協定流量
  • mail – Mail協定流量
  • stream – TCP協定流量

指定在這些上下文之外的指令是在主上下文中。
在每個流量處理上下文中,可包括一個或多個伺服器上下文來定義控制請求處理的虛擬伺服器。 您可以在伺服器環境中包含的指令根據流量型別而有所不同。

對於HTTP流量(http上下文),每個伺服器指令控制對特定域或IP地址上的資源請求的處理。 伺服器上下文中的一個或多個位置上下文定義了如何處理特定的URI集合。

對於郵件和TCP流量(mailstream 上下文),伺服器指令各自控制到達特定TCP埠或UNIX通訊端的流量處理。

以下組態說明了上下文的使用情況。

user nobody; # a directive in the 'main' context

events {
    # configuration of connection processing
}

http {

    # Configuration specific to HTTP and affecting all virtual servers

    server {
        # configuration of HTTP virtual server 1

        location /one {
            # configuration for processing URIs with '/one'
        }

        location /two {
            # configuration for processing URIs with '/two'
        }
    }

    server {
        # configuration of HTTP virtual server 2
    }
}

stream {
    # Configuration specific to TCP and affecting all virtual servers

    server {
        # configuration of TCP virtual server 1 
    }
}

對於大多數指令,在另一個上下文(子上下文)中定義的上下文將繼承父級中包含的偽指令的值。 要覆蓋從父進程繼承的值,請在子上下文中包含該指令。 有關上下文遺留的更多資訊,請參閱proxy_set_header偽指令的文件。

要更改組態檔案才能生效,NGINX必須重新載入該檔案。可以重新啟動nginx進程或傳送reload信號來升級組態,而不會中斷當前請求的處理。