詳解Nginx虛擬主機(jī)配置中server_name的具體寫(xiě)法
server_name指令可以設(shè)置基于域名的虛擬主機(jī),根據(jù)請(qǐng)求頭部的內(nèi)容,一個(gè)ip的服務(wù)器可以配置多個(gè)域名。下面這些server_name的參數(shù)是有效的:
server_name jb51.net; server_name jb51.net www.dbjr.com.cn; server_name *.jb51.net; server_name .jb51.net; server_name nginx.*; server_name jb51.netg bucknell.net brackley.org; server_name localhost litchfield bleddington; server_name "";
多個(gè)域名之間以空格分隔。nginx允許一個(gè)虛擬主機(jī)有一個(gè)或多個(gè)名字,也可以使用通配符"*"來(lái)設(shè)置虛擬主機(jī)的名字。上面的例子我們看到了很多特殊的地方:
第一組例子,首先定義server_name為jb51.net,那么來(lái)自http://jb51.net的請(qǐng)求就會(huì)發(fā)到該主機(jī)上。第二個(gè)例子配置了jb51.net和www.dbjr.com.cn,那么http://jb51.net和http://www.dbjr.com.cn的請(qǐng)求會(huì)發(fā)到這個(gè)主機(jī)上。
*.jb51.net和.jb51.net是等同的配置,設(shè)置該主機(jī)處理所有來(lái)自jb51.net的子域名,比如www.dbjr.com.cn,blog.jb51.net等
第二組server_name配置nginx.*,配置服務(wù)器處理所有以nginx.開(kāi)頭的請(qǐng)求。例如,nginx.com,jb51.net,nginx.net,nginx.baidu.com
接下來(lái)一組第一個(gè)server_name配置,設(shè)置主機(jī)處理來(lái)自三個(gè)域名的請(qǐng)求。nginx允許設(shè)置不是有效域名的名字。比如接下來(lái)這個(gè)配置我們可以看到三個(gè)不是有效域名的例子,localhost,litchfiled和bledington。nginx只查找請(qǐng)求的HTTP頭中的域名但并不判斷域名是否有效,這個(gè)例子中這些主機(jī)名可以配制在/etc/hosts中。當(dāng)你在本機(jī)調(diào)試時(shí)使用非域名的主機(jī)名有時(shí)候更適合些。
最后一組例子,server_name設(shè)置為空的雙引號(hào),它告訴nginx捕捉所有沒(méi)有hostname的請(qǐng)求,或者h(yuǎn)ostname沒(méi)有在其它server_name中指定的。
總結(jié)一下,server_name指令在接到請(qǐng)求后的匹配順序分別為:
1、準(zhǔn)確的server_name匹配,例如:
server { listen 80; server_name domain.com www.domain.com; ...}
2、以通配符開(kāi)始的字符串:
server { listen 80; server_name .domain.com;...}
3、以通配符結(jié)束的字符串:
server { listen 80; server_name www.; ...}
4、匹配正則表達(dá)式:
server { listen 80; server_name ~^(?.+).domain.com$;...}
nginx將按照1,2,3,4的順序?qū)erver name進(jìn)行匹配,只有有一項(xiàng)匹配以后就會(huì)停止搜索,所以我們?cè)谑褂眠@個(gè)指令的時(shí)候一定要分清楚它的匹配順序(類(lèi)似于location指令)。
server_name指令一項(xiàng)很實(shí)用的功能便是可以在使用正則表達(dá)式的捕獲功能,這樣可以盡量精簡(jiǎn)配置文件,畢竟太長(zhǎng)的配置文件日常維護(hù)也很不方便。下面是2個(gè)具體的應(yīng)用:
1、在一個(gè)server塊中配置多個(gè)站點(diǎn):
server { listen 80; server_name ~^(www.)?(.+)$; index index.php index.html; root /data/wwwsite/$2; }
站點(diǎn)的主目錄應(yīng)該類(lèi)似于這樣的結(jié)構(gòu):
/data/wwwsite/domain.com/data/wwwsite/nginx.org/data/wwwsite/baidu.com/data/wwwsite/google.com
這樣就可以只使用一個(gè)server塊來(lái)完成多個(gè)站點(diǎn)的配置。
2、在一個(gè)server塊中為一個(gè)站點(diǎn)配置多個(gè)二級(jí)域名。
實(shí)際網(wǎng)站目錄結(jié)構(gòu)中我們通常會(huì)為站點(diǎn)的二級(jí)域名獨(dú)立創(chuàng)建一個(gè)目錄,同樣我們可以使用正則的捕獲來(lái)實(shí)現(xiàn)在一個(gè)server塊中配置多個(gè)二級(jí)域名:
server { listen 80; server_name ~^(.+)?.domain.com$; index index.html; if ($host = domain.com){ rewrite ^ http://www.domain.com permanent; } root /data/wwwsite/domain.com/$1/;}
站點(diǎn)的目錄結(jié)構(gòu)應(yīng)該如下:
/data/wwwsite/domain.com/www//data/wwwsite/domain.com/nginx/
這樣訪問(wèn)www.domain.com時(shí)root目錄為/data/wwwsite/domain.com/www/,nginx.domain.com時(shí)為/data/wwwsite/domain.com/nginx/,以此類(lèi)推。
后面if語(yǔ)句的作用是將domain.com的方位重定向到www.domain.com,這樣既解決了網(wǎng)站的主目錄訪問(wèn),又可以增加seo中對(duì)www.domain.com的域名權(quán)重。
相關(guān)文章
全面了解Nginx中的HTTP協(xié)議相關(guān)模塊配置
HTTP的處理是Nginx服務(wù)器的最重要功能,這里我們就帶大家來(lái)全面了解Nginx中的HTTP協(xié)議相關(guān)模塊配置,需要的朋友可以參考下2016-07-07nginx?添加http_stub_status_module模塊
本文主要介紹了nginx?添加http_stub_status_module模塊,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-05-05Mac使用Nginx設(shè)置代理并禁用自帶Apache的問(wèn)題記錄
本文介紹如何在Mac上禁用自帶的Apache服務(wù)并安裝Nginx,首先需要關(guān)閉Apache并禁止其自啟動(dòng),接著,通過(guò)Homebrew安裝Nginx,并配置其文件和目錄,最后,介紹了如何生成SSL/自簽名證書(shū),詳細(xì)步驟包括修改Apache配置、安裝Nginx、編輯Nginx配置文件以及驗(yàn)證和重啟Nginx服務(wù)2024-09-09Linux 系統(tǒng) nginx 服務(wù)器安裝及負(fù)載均衡配置詳解
nginx(engine x) 是一個(gè) 高性能 的 HTTP 和 反向代理 服務(wù)器、郵件代理服務(wù)器以及通用的 TCP/UDP 代理服務(wù)器。這篇文章主要介紹了Linux 系統(tǒng) nginx 服務(wù)器安裝及負(fù)載均衡配置詳解,需要的朋友可以參考下2019-07-07nginx 讓users有權(quán)限啟動(dòng)的兩種方法
這篇文章主要介紹了nginx 讓users有權(quán)限啟動(dòng)兩種方法的相關(guān)資料,需要的朋友可以參考下2017-05-05Nginx使用的php-fpm的兩種進(jìn)程管理方式及優(yōu)化
這篇文章主要介紹了Nginx使用的php-fpm的兩種進(jìn)程管理方式及優(yōu)化,需要的朋友可以參考下2016-09-09Nginx設(shè)置Access-Control-Allow-Origin多域名跨域?qū)崿F(xiàn)
本文主要介紹了Nginx設(shè)置Access-Control-Allow-Origin多域名跨域?qū)崿F(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2024-11-11Nginx使用反向代理實(shí)現(xiàn)負(fù)載均衡過(guò)程解析
這篇文章主要介紹了Nginx使用反向代理實(shí)現(xiàn)負(fù)載均衡過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-09-09nginx訪問(wèn)動(dòng)態(tài)接口報(bào)錯(cuò)404Not Found問(wèn)題解決
本文主要介紹了nginx訪問(wèn)動(dòng)態(tài)接口報(bào)錯(cuò)404Not Found問(wèn)題解決,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-03-03