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