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