??Nginx多用于配置Web服務(wù)器。抽象來(lái)說(shuō),將Nginx配置為Web服務(wù)器就是定義處理哪些 URLS 和如何處理這些URLS 對應的請求,定義一些虛擬服務(wù)器,控制具有特定 IP 和的請求。Nginx 通過(guò)定義一系列 locations 來(lái)控制對 URIS 的選擇。每一個(gè) location 定義了對映射到自己的請求的處理場(chǎng)景,返回一個(gè)文件或者代理請求,或者根據不同的錯誤代碼返回不同的錯誤頁(yè)面。另外,根據 URI 的不同,請求也可以被重定向到其它。下面就由小編和大家講一講nginx安裝配置。
??一、設置虛擬服務(wù)器
??listen:
??Nginx 配置文件至少包含一個(gè) server 命令 ,用來(lái)定義虛擬服務(wù)器。當請求到來(lái)時(shí), Nginx 會(huì )首先選擇一個(gè)虛擬服務(wù)器來(lái)處理該請求。
??虛擬服務(wù)器定義在 http 上下文中的 server 中:
??http{
??server{
??#Serverconfiguration
??}
??}
??注意: http 中可以定義多個(gè) server
??server 配置塊使用 listen 命令監聽(tīng)本機 IP 和端口號(包括 Unix domain socket and path),支持 IPv4、IPv6,IPv6地址需要用方括號括起來(lái):
??server{
??listen127.0.0.1:8080;#IPv4地址,8080端口
??#listen[2001:3CA1:10F:1A:121B:0:0:10]:80;#IPv6地址,80端口
??#listen[::]:80;#聽(tīng)本機的所有IPv4與IPv6地址,80端口
??#Therestofserverconfiguration
??}
??上述配置,如果不寫(xiě)端口號,默認使用80端口,如果不寫(xiě) IP ,則監聽(tīng)本機所有 IP。
??server_name:
??如果多個(gè) server 的 listen IP 和端口號一模一樣, Nginx 通過(guò)請求頭中的 Host
??與 server_name 定義的主機名進(jìn)行比較,來(lái)選擇合適的虛擬服務(wù)器處理請求:
??server{
??listen80;
??server_namelufficcwww.lufficc.com;
??...
??}
??server_name 的參數可以為:
??1、完整的主機名,如:api.lufficc.com 。
??2、含有通配符(含有 *),如:*.lufficc.com 或 api.* 。
??3、正則表達式,以 ~ 開(kāi)頭。
??通配符只能在開(kāi)頭或結尾,而且只能與一個(gè) . 相鄰。www.*.example 和 w*.example.org均無(wú)效。 但是,可以使用正則表達式匹配這些名稱(chēng),例如 ~^www.. .example.org$ 和~^w.*.example.org$ 。 而且 * 可以匹配多個(gè)部分。 名稱(chēng) * .example.org 不僅匹配www.example.org,還匹配www.sub.example.org。
??對于正則表達式:Nginx 使用的正則表達式與 Perl 編程語(yǔ)言(PCRE)使用的正則表達式兼容。 要使用正則表達式,且必須以 ~ 開(kāi)頭。
??命名的正則表達式可以捕獲變量,然后使用:
??server{
??server_name~^(www.)?(?. )$;
??location/{
??root/sites/$domain;
??}
??}
??小括號 () 之間匹配的內容,也可以在后面通過(guò) $1 來(lái)引用,$2 表示的是前面第二個(gè) () 里的內容。因此上述內容也可寫(xiě)為:
??server{
??server_name~^(www.)?(. )$;
??location/{
??root/sites/$2;
??}
??}
??一個(gè) server_name 示例:
??server{
??listen80;
??server_nameapi.lufficc.com*.lufficc.com;
??...
??}
??同樣,如果多個(gè)名稱(chēng)匹配 Host 頭部, Nginx 采用下列順序選擇:
??1、完整的主機名,如 api.lufficc.com。
??2、最長(cháng)的,且以 * 開(kāi)頭的通配名,如:*.lufficc.com。
??3、最長(cháng)的,且以 * 結尾的通配名,如:api.* 。
??4、第一個(gè)匹配的正則表達式。(按照配置文件中的順序)
??即優(yōu)先級:api.lufficc.com > *.lufficc.com > api.* > 正則。
??如果 Host 頭部不匹配任何一個(gè) server_name ,Nginx 將請求路由到默認虛擬服務(wù)器。默認虛擬服務(wù)器是指:nginx.conf 文件中第一個(gè) server 或者 顯式用 default_server 聲明:
??server{
??listen80default_server;
??...
??}
??二、配置 location
??URI 與 location 參數的匹配
??當選擇好 server 之后,Nginx 會(huì )根據 URIs 選擇合適的 location 來(lái)決定代理請求或者返回文件。
??location 指令接受兩種類(lèi)型的參數:
??1、前綴字符串(路徑名稱(chēng))
??2、正則表達式
??對于前綴字符串參數, URIs 必須嚴格的以它開(kāi)頭。例如對于 /some/path/ 參數,可以匹配/some/path/document.html ,但是不匹配 /my-site/some/path,因為 /my-site/some/path 不以/some/path/ 開(kāi)頭。
??server{
??listen80default_server;
??...
??}
??對于正則表達式,以 ~ 開(kāi)頭表示大小寫(xiě)敏感,以 ~* 開(kāi)頭表示大小寫(xiě)不敏感。注意路徑中的 . 要寫(xiě)成 . 。例如一個(gè)匹配以 .html 或者 .htm 結尾的 URI 的 location:
??location~.html?{
??...
??}
??正則表達式的優(yōu)先級大于前綴字符串。如果找到匹配的前綴字符串,仍繼續搜索正則表達式,但如果前綴字符串以 ^~ 開(kāi)頭,則不再檢查正則表達式。
??三、具體的搜索匹配流程如下:
??1、將 URI 與所有的前綴字符串進(jìn)行比較。
??2、= 修飾符表明 URI 必須與前綴字符串相等(不是開(kāi)始,而是相等),如果找到,則搜索停止。
??3、如果找到的最長(cháng)前綴匹配字符串以 ^~ 開(kāi)頭,則不再搜索正則表達式是否匹配。
??4、存儲匹配的最長(cháng)前綴字符串。
??5、測試對比 URI 與正則表達式。
??6、找到第一個(gè)匹配的正則表達式后停止。
??7、如果沒(méi)有正則表達式匹配,使用 4 存儲的前綴字符串對應的 location。
??= 修飾符擁有最高的優(yōu)先級。如網(wǎng)站首頁(yè)訪(fǎng)問(wèn)頻繁,我們可以專(zhuān)門(mén)定義一個(gè) location 來(lái)減少搜索匹配次數(因為搜索到 = 修飾的匹配的 location 將停止搜索),提高速度:
??location=/{
??...
??}
??四、靜態(tài)文件和代理
??一些常用的變量如下:
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng )、來(lái)自本網(wǎng)站內容采集于網(wǎng)絡(luò )互聯(lián)網(wǎng)轉載等其它媒體和分享為主,內容觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如侵犯了原作者的版權,請告知一經(jīng)查實(shí),將立刻刪除涉嫌侵權內容,聯(lián)系我們QQ:712375056,同時(shí)歡迎投稿傳遞力量。
Copyright ? 2009-2022 56dr.com. All Rights Reserved. 特網(wǎng)科技 特網(wǎng)云 版權所有 特網(wǎng)科技 粵ICP備16109289號
域名注冊服務(wù)機構:阿里云計算有限公司(萬(wàn)網(wǎng)) 域名服務(wù)機構:煙臺帝思普網(wǎng)絡(luò )科技有限公司(DNSPod) CDN服務(wù):阿里云計算有限公司 百度云 中國互聯(lián)網(wǎng)舉報中心 增值電信業(yè)務(wù)經(jīng)營(yíng)許可證B2
建議您使用Chrome、Firefox、Edge、IE10及以上版本和360等主流瀏覽器瀏覽本網(wǎng)站