Nginx Web服務器配置塊有:1、設置虛擬服務器;2、配置位置;3、使用變量;4、返回特定狀態碼;5、重寫請求中的URI;6、重寫HTTP響應;7、處理錯誤。
Nginx Web服務器配置塊有:
1. 設置虛擬服務器
NGINX配置文件必須至少包含一個服務器指令來定義虛擬服務器。 當NGINX處理請求時,它首先選擇提供請求的虛擬服務器。
虛擬服務器由http上下文中的服務器指令定義,例如:
http { server { # Server configuration } }
可以將多個server指令添加到http上下文中以定義多個虛擬服務器。
推薦教程:nginx快速入門教程
server
配置塊通常包括一個listen指令,用于指定服務器偵聽請求的IP地址和端口(或Unix域套接字和路徑)。IPv4和IPv6地址均被接受; 將方括號(。
下面的示例顯示了監聽IP地址127.0.0.1和端口8080的服務器的配置:
server { listen 127.0.0.1:8080; # The rest of server configuration }
如果省略端口,則使用標準端口。 同樣地,如果省略一個地址,服務器將偵聽所有地址。 如果沒有包含listen指令,則“標準”端口為80/tcp
,“default”端口為8000/tcp
,具體取決于超級用戶權限。
如果有多個服務器與請求的IP地址和端口相匹配,則NGINX將根據服務器塊中的server_name指令測試請求的主機頭域。 server_name的參數可以是完整(精確)名稱,通配符或正則表達式。
通配符是一個字符串,其開頭,結尾或兩者都包含星號(*); 星號匹配任何字符序列。 NGINX將Perl語法用于正則表達式; 在它們之前使用波浪號(?)。 此示例說明了一個確切的名稱。
server { listen 80; server_name example.org www.example.org; ... }
如果匹配主機頭幾個名稱,則NGINX通過按以下順序搜索名稱并使用其找到的第一個匹配來選擇一個:
-
確切的名字(完整準確的名稱)
-
以星號開頭的最長通配符,例如:*.example.org
-
以星號結尾的最長通配符,如:mail.*
-
第一個匹配正則表達式(按照出現在配置文件中的順序)
如果主機頭字段與服務器名稱不匹配,則NGINX會將請求路由到請求到達端口的默認服務器。 默認服務器是nginx.conf文件中列出的第一個服務器,除非您將listen_server參數包含在listen指令中以明確指定服務器為默認值。
server { listen 80 default_server; ... }
一個完整的Nginx虛擬機配置示例,這里我們演示配置兩個虛擬機,對應域名分別為:vhost1.com 和 vhost2.com,vhost1.com網站的主目錄在/data/www/vhost1
,vhost2.com網站的主目錄在/data/www/vhost2
:
server { listen 80; server_name vhost1.com www.vhost1.com; index index.html index.html; root /data/www/vhost1; access_log /var/log/vhost1.com.log; } server { listen 80; server_name vhost2.com www.vhost2.com; index index.html index.html; root /data/www/vhost2; access_log /var/log/vhost2.com.log; }
2. 配置位置
NGINX可以根據請求URI向不同的代理發送流量或提供不同的文件。 這些塊是使用放置在server指令中的location指令來定義的。
例如,您可以定義三個location塊,以指示虛擬服務器向一個代理服務器發送一些請求,將其他請求發送到不同的代理服務器,并通過從本地文件系統傳遞文件來提供其余請求。
NGINX測試根據所有location指令的參數請求URI,并應用匹配location中定義的指令。 在每個location塊內,通常可能(除了一些例外)放置