国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 網(wǎng)站 > Nginx > 正文

詳解Nginx虛擬主機配置中server_name的具體寫法

2024-08-30 12:06:34
字體:
供稿:網(wǎng)友

server_name指令可以設(shè)置基于域名的虛擬主機,根據(jù)請求頭部的內(nèi)容,一個ip的服務(wù)器可以配置多個域名。下面這些server_name的參數(shù)是有效的:

server_name Vevb.com;server_name Vevb.com www.survivalescaperooms.com;server_name *.Vevb.com;server_name .Vevb.com;server_name nginx.*;server_name Vevb.com 9enjoy.comserver_name "";

多個域名之間以空格分隔。nginx允許一個虛擬主機有一個或多個名字,也可以使用通配符"*"來設(shè)置虛擬主機的名字。上面的例子我們看到了很多特殊的地方:

第一組例子,首先定義server_name為Vevb.com,那么來自http://Vevb.com的請求就會發(fā)到該主機上。第二個例子配置了Vevb.com和www.survivalescaperooms.com,那么http://Vevb.com和http://www.survivalescaperooms.com的請求會發(fā)到這個主機上。
*.Vevb.com和.Vevb.com是等同的配置,設(shè)置該主機處理所有來自Vevb.com的子域名,比如www.survivalescaperooms.com,blog.Vevb.com等
第二組server_name配置nginx.*,配置服務(wù)器處理所有以nginx.開頭的請求。例如,nginx.com,Vevb.com,nginx.net,nginx.baidu.com
接下來一組第一個server_name配置,設(shè)置主機處理來自三個域名的請求。nginx允許設(shè)置不是有效域名的名字。比如接下來這個配置我們可以看到三個不是有效域名的例子,localhost,litchfiled和bledington。nginx只查找請求的HTTP頭中的域名但并不判斷域名是否有效,這個例子中這些主機名可以配制在/etc/hosts中。當你在本機調(diào)試時使用非域名的主機名有時候更適合些。
最后一組例子,server_name設(shè)置為空的雙引號,它告訴nginx捕捉所有沒有hostname的請求,或者hostname沒有在其它server_name中指定的。

總結(jié)一下,server_name指令在接到請求后的匹配順序分別為:
1、準確的server_name匹配,例如:

server { listen 80; server_name domain.com www.domain.com; ...}

2、以通配符開始的字符串:

server { listen 80; server_name .domain.com;...}

3、以通配符結(jié)束的字符串:

server { listen 80; server_name www.; ...}

4、匹配正則表達式:

server { listen 80; server_name ~^(?.+).domain.com$;...}

nginx將按照1,2,3,4的順序?qū)erver name進行匹配,只有有一項匹配以后就會停止搜索,所以我們在使用這個指令的時候一定要分清楚它的匹配順序(類似于location指令)。
server_name指令一項很實用的功能便是可以在使用正則表達式的捕獲功能,這樣可以盡量精簡配置文件,畢竟太長的配置文件日常維護也很不方便。下面是2個具體的應(yīng)用:

1、在一個server塊中配置多個站點:
server { listen 80; server_name ~^(www.)?(.+)$; index index.php index.html; root /data/wwwsite/$2; }

站點的主目錄應(yīng)該類似于這樣的結(jié)構(gòu):
/data/wwwsite/domain.com /data/wwwsite/nginx.org /data/wwwsite/9enjoy.com /data/wwwsite/google.com


這樣就可以只使用一個server塊來完成多個站點的配置。
2、在一個server塊中為一個站點配置多個二級域名。
實際網(wǎng)站目錄結(jié)構(gòu)中我們通常會為站點的二級域名獨立創(chuàng)建一個目錄,同樣我們可以使用正則的捕獲來實現(xiàn)在一個server塊中配置多個二級域名:

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/;}

站點的目錄結(jié)構(gòu)應(yīng)該如下:

/data/wwwsite/domain.com/www/ /data/wwwsite/domain.com/nginx/

這樣訪問www.domain.com時root目錄為/data/wwwsite/domain.com/www/,nginx.domain.com時為/data/wwwsite/domain.com/nginx/,以此類推。
后面if語句的作用是將domain.com的方位重定向到www.domain.com,這樣既解決了網(wǎng)站的主目錄訪問,又可以增加seo中對www.domain.com的域名權(quán)重。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 阿克| 黎城县| 安平县| 鄂托克旗| 东莞市| 宝应县| 班玛县| 同仁县| 临澧县| 苍南县| 磐安县| 巫溪县| 乌海市| 咸宁市| 南郑县| 满洲里市| 合肥市| 沛县| 景洪市| 贺兰县| 宝坻区| 红安县| 于都县| 江油市| 安远县| 铜山县| 米林县| 眉山市| 上饶县| 东至县| 涟源市| 延津县| 平山县| 海盐县| 永丰县| 遂溪县| 贵港市| 都昌县| 连江县| 延川县| 福泉市|