Nginx配置之虛擬主機(jī)server_name優(yōu)先級(jí)方式
測(cè)試環(huán)境
- Nginx 1.10.3 (nginx version: nginx/1.10.3 (Ubuntu))
- Ubuntu 16.04.4 LTS x64 (ip:192.168.241.132)
- Chrome (Win10)
- Win10 Host
# host文件內(nèi)容 192.168.241.132 www.ExactName.com 192.168.241.132 www.Wildcard.com 192.168.241.132 www.RegEx.com
# Nginx 測(cè)試html文件目錄
/var/www/
├── test-1
│ ├── ExactName.html
│ ├── ExactNameOther.html
│ ├── ExactName-RE.html
│ └── ExactName-WildCard.html
├── test-2
│ ├── LongestWildcard.html
│ ├── ShorterWildcard.html
│ ├── Wildcard-End.html
│ └── Wildcard-Reg.html
├── test-3
│ ├── LongestWildcard-End.html
│ ├── ShorterWildcard-End.html
│ └── Wildcard-Reg.html
└── test-4
├── RegEx-exacted.html
└── RegEx.html
匹配優(yōu)先級(jí)
- 精確匹配名稱
- 以星號(hào)開頭的最長(zhǎng)通配符
- 以星號(hào)結(jié)尾的最長(zhǎng)通配符
- 第一個(gè)匹配的正則表達(dá)式(按配置文件中出現(xiàn)的順序)
實(shí)例
1.精確名稱
優(yōu)先級(jí)最高,無(wú)論先后位置
文件目錄
- 配置文件內(nèi)容
# 不包含正則表達(dá)式的不匹配的名稱網(wǎng)址
server {
listen 80;
server_name www.ExactNameOther.com;
root /var/www/test-1/;
index ExactNameOther.html;
}
# 包含正則表達(dá)式,并且正則表達(dá)式能匹配上,在確切名稱配置前面
server {
listen 80;
server_name ~^www\.Ex*+\.com$;
root /var/www/test-1/;
index ExactName-RE.html;
}
# 包含通配符,并且能匹配上網(wǎng)址,在確切名稱配置前面
server{
listen 80;
server_name *.ExactName.com www.ExactName.*;
root /var/www/test-1/;
index ExactName-WildCard.html;
}
# 確切名稱的網(wǎng)址
server {
listen 80;
server_name www.ExactName.com;
root /var/www/test-1/;
index ExactName.html;
}
結(jié)果

2.以星號(hào)開頭的最長(zhǎng)通配符
同樣能匹配的幾條規(guī)則中,最長(zhǎng)前綴的匹配的上,即使位置在后面
文件目錄
- 配置文件內(nèi)容
# 同樣能匹配輸入網(wǎng)址www.Wildcard.com,較少確切的字符個(gè)數(shù),但在前面
server {
listen 80;
server_name *.com;
root /var/www/test-2/;
index ShorterWildcard.html;
}
# 同樣能匹配輸入網(wǎng)址www.Wildcard.com, 星號(hào)結(jié)尾,但在前面
server {
listen 80;
server_name www.Wildcard.*;
root /var/www/test-2/;
index Wildcard-End.html;
}
# 同樣能匹配輸入網(wǎng)址www.Wildcard.com,正則表達(dá)式,但在前面
server {
listen 80;
server_name ~^.*\.Wildcard.com$;
root /var/www/test-2/;
index Wildcard-Reg.html;
}
# 同樣能匹配輸入網(wǎng)址www.Wildcard.com,但是確切的字符個(gè)數(shù)更長(zhǎng)
server {
listen 80;
server_name *.Wildcard.com;
root /var/www/test-2/;
index LongestWildcard.html;
}
結(jié)果

3.以星號(hào)結(jié)尾的最長(zhǎng)通配符
同樣能匹配的幾條規(guī)則中,最長(zhǎng)前綴的匹配的上,即使位置在后面
文件目錄
- 配置文件內(nèi)容
# 同樣能匹配輸入網(wǎng)址www.Wildcard.com,較少確切的字符個(gè)數(shù)
server {
listen 80;
server_name www.*;
root /var/www/test-3/;
index ShorterWildcard-End.html;
}
# 同樣能匹配輸入網(wǎng)址www.Wildcard.com,正則表達(dá)式,但在前面
server {
listen 80;
server_name ~^.*\.Wildcard.com$;
root /var/www/test-2/;
index Wildcard-Reg.html;
}
# 同樣能匹配輸入網(wǎng)址www.Wildcard.com,但是確切的字符個(gè)數(shù)更長(zhǎng)
server {
listen 80;
server_name *.Wildcard.com;
root /var/www/test-3/;
index LongestWildcard-End.html;
}
結(jié)果

4.第一個(gè)匹配的正則表達(dá)式(按配置文件中出現(xiàn)的順序)
無(wú)論確切字符個(gè)數(shù)的多少,最先加載的配置優(yōu)先
- 配置文件內(nèi)容
# 同為能匹配上的正則表達(dá)式,確切的字符個(gè)數(shù)較少,但在前面
server {
listen 80;
server_name ~^.*.com$;
root /var/www/test-4/;
index RegEx.html;
}
# 同為能匹配上的正則表達(dá)式,確切的字符個(gè)數(shù)多,但在后面
server {
listen 80;
server_name ~^.*RegEx.com$;
root /var/www/test-4/;
index RegEx-exacted.html;
}
結(jié)果

總結(jié)
1.所有規(guī)則分配到各自類,優(yōu)先級(jí)如下,找到第一個(gè)符合的類別即停止

2.在符合的類別中搜索所有符合的規(guī)則,并按各自類別優(yōu)先級(jí)規(guī)則處理
類別2. 以星號(hào)開頭的最長(zhǎng)通配符
類別3. 以星號(hào)結(jié)尾的最長(zhǎng)通配符
類別4. 第一個(gè)匹配的正則表達(dá)式(按配置文件中出現(xiàn)的順序)
如果有相同配置,Nginx會(huì)給出警告,但仍能啟動(dòng), 會(huì)選擇最先找到規(guī)則
# 以下僅給出ExactName示范, 通配符和正則表達(dá)式也適用
server {
listen 80;
server_name same.name.com;
.......
}
server {
listen 80;
server_name same.name.com;
.......
}
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Nginx日志統(tǒng)計(jì)分析的常用命令總結(jié)
這篇文章主要給大家總結(jié)了關(guān)于Nginx日志統(tǒng)計(jì)分析的一些常用命令,其中包括IP相關(guān)統(tǒng)計(jì)、頁(yè)面訪問(wèn)統(tǒng)計(jì)、性能分析、蜘蛛抓取統(tǒng)計(jì)、TCP連接統(tǒng)計(jì)等相關(guān)命令的總結(jié),相信對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起看看吧。2017-07-07
詳解nginx實(shí)現(xiàn)ssl反向代理實(shí)戰(zhàn)
本篇文章主要介紹了nginx實(shí)現(xiàn)ssl反向代理實(shí)戰(zhàn),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-01-01
FastDFS+Nginx如何搭建本地服務(wù)器并實(shí)現(xiàn)遠(yuǎn)程訪問(wèn)
FastDFS是一個(gè)開源的輕量級(jí)分布式文件系統(tǒng),它對(duì)文件進(jìn)行管理,功能包括:文件存儲(chǔ)、文件同步、文件訪問(wèn)(文件上傳、文件下載)等,解決了大容量存儲(chǔ)和負(fù)載均衡的問(wèn)題,這篇文章主要介紹了FastDFS+Nginx搭建本地服務(wù)器并實(shí)現(xiàn)遠(yuǎn)程訪問(wèn),需要的朋友可以參考下2023-11-11
nginx配置location總結(jié)location正則寫法及rewrite規(guī)則寫法
本文詳細(xì)講述了Nginx location正則寫法,Nginx 的Rewrite規(guī)則以及Nginx.conf中if指令與全局變量2018-10-10

