亚洲乱色熟女一区二区三区丝袜,天堂√中文最新版在线,亚洲精品乱码久久久久久蜜桃图片,香蕉久久久久久av成人,欧美丰满熟妇bbb久久久

LOGO OA教程 ERP教程 模切知識(shí)交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

Nginx 中,如何通過(guò) server_name 區(qū)分同一端口下不同域名、 主機(jī)名的請(qǐng)求以及優(yōu)先級(jí)別

admin
2025年6月28日 23:36 本文熱度 242

在 Nginx 中,通過(guò) server_name 區(qū)分同一端口下不同域名/主機(jī)名的請(qǐng)求,核心是利用虛擬主機(jī)(Server Block) 機(jī)制,按以下邏輯匹配:


1. 匹配優(yōu)先級(jí)規(guī)則

Nginx 收到請(qǐng)求后,先提取 Host 頭(請(qǐng)求的域名/IP:端口),按以下順序找對(duì)應(yīng) server

匹配類型
示例配置
優(yōu)先級(jí)
說(shuō)明
精確匹配
server_name example.com www.abc.com;
最高
完全一致才匹配
通配符前綴
server_name *.example.com;
匹配二級(jí)及以上子域
通配符后綴
server_name mail.*;
匹配固定前綴的任意后綴
正則匹配(~ 開頭)
server_name ~^api\d+\.example\.com$;
正則表達(dá)式靈活匹配
兜底匹配(_ 或 default
server_name _;
最低
無(wú)其他匹配時(shí)默認(rèn)生效

示例

server {
    listen 80;
    server_name example.com www.example.com; # 精確匹配
    ...
}

server {
    listen 80;
    server_name *.example.com; # 匹配 blog.example.com 等子域
    ...
}

server {
    listen 80;
    server_name ~^api\d+\.example\.com$; # 正則匹配 api1.example.com 等
    ...
}

server {
    listen 80;
    server_name _; # 其他未匹配的請(qǐng)求走這里
    return 404;
}

2. 關(guān)鍵配置細(xì)節(jié)

(1)listen 端口與 IP 綁定

若需區(qū)分同一端口但不同 IP(服務(wù)器多網(wǎng)卡場(chǎng)景),可在 listen 指定 IP:

server {
    listen 192.168.1.10:80; # 僅處理 192.168.1.10 的 80 端口請(qǐng)求
    server_name site1.com;
    ...
}

server {
    listen 192.168.1.20:80; # 僅處理 192.168.1.20 的 80 端口請(qǐng)求
    server_name site2.com;
    ...
}

(2)Host 頭缺失的處理

若請(qǐng)求無(wú) Host 頭(或非法值),Nginx 會(huì)找默認(rèn) server(同端口下,第一個(gè) server 或顯式標(biāo)記 default_server 的):

server {
    listen 80 default_server; # 標(biāo)記為默認(rèn),處理無(wú) Host 或不匹配的請(qǐng)求
    server_name _;
    return 400; # 直接返回錯(cuò)誤
}

(3)HTTPS 場(chǎng)景的 SNI 支持

TLS 握手時(shí),瀏覽器通過(guò) SNI(Server Name Indication) 傳遞 server_name,Nginx 需開啟支持(默認(rèn)開啟,舊版本需編譯時(shí)加 --with-http_ssl_module):

server {
    listen 443 ssl;
    server_name site1.com;
    ssl_certificate /etc/nginx/certs/site1.crt;
    ssl_certificate_key /etc/nginx/certs/site1.key;
    ...
}

server {
    listen 443 ssl;
    server_name site2.com;
    ssl_certificate /etc/nginx/certs/site2.crt;
    ssl_certificate_key /etc/nginx/certs/site2.key;
    ...
}

3. 調(diào)試與驗(yàn)證

(1)檢查配置語(yǔ)法

nginx -t # 驗(yàn)證配置文件是否正確

(2)查看請(qǐng)求匹配日志

在 error_log 開啟 debug 級(jí)別(臨時(shí)調(diào)試用,別長(zhǎng)期開):

error_log /var/log/nginx/error.log debug;

重啟 Nginx 后,請(qǐng)求日志會(huì)顯示 server_name 匹配過(guò)程。

(3)用 curl 模擬請(qǐng)求

指定 Host 頭測(cè)試不同域名:

curl -H "Host: example.com" http://127.0.0.1 # 匹配 example.com 的 server
curl -H "Host: blog.example.com" http://127.0.0.1 # 匹配 *.example.com 的 server

4. 常見問題

  • 問題1:修改 server_name 后不生效
    → 原因:瀏覽器緩存/未重啟 Nginx
    → 解決:nginx -s reload 重啟,或用 curl 繞開瀏覽器緩存測(cè)試。

  • 問題2:通配符/正則匹配失效
    → 原因:語(yǔ)法錯(cuò)誤(如通配符 *.com 不匹配 a.b.com,需寫成 *.b.com 或正則)
    → 解決:嚴(yán)格按通配符/正則規(guī)則寫,正則用 ~ 標(biāo)記并轉(zhuǎn)義 .(如 ~^www\.example\.com$)。

  • 問題3:HTTPS 提示證書錯(cuò)誤
    → 原因:SNI 未生效(舊瀏覽器/客戶端不支持),或證書綁定錯(cuò)誤
    → 解決:確認(rèn)客戶端支持 SNI,檢查 ssl_certificate 與 server_name 對(duì)應(yīng)關(guān)系。

通過(guò) server_name 配合 listen,可精準(zhǔn)區(qū)分同一端口的不同域名請(qǐng)求,核心是利用 Nginx 的虛擬主機(jī)匹配規(guī)則。調(diào)試時(shí)重點(diǎn)抓 Host 頭和日志,就能快速定位問題~


閱讀原文:原文鏈接


該文章在 2025/7/1 23:29:42 編輯過(guò)
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點(diǎn)晴ERP是一款針對(duì)中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國(guó)內(nèi)大量中小企業(yè)的青睞。
點(diǎn)晴PMS碼頭管理系統(tǒng)主要針對(duì)港口碼頭集裝箱與散貨日常運(yùn)作、調(diào)度、堆場(chǎng)、車隊(duì)、財(cái)務(wù)費(fèi)用、相關(guān)報(bào)表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點(diǎn),圍繞調(diào)度、堆場(chǎng)作業(yè)而開發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點(diǎn)晴WMS倉(cāng)儲(chǔ)管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購(gòu)管理,倉(cāng)儲(chǔ)管理,倉(cāng)庫(kù)管理,保質(zhì)期管理,貨位管理,庫(kù)位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號(hào)管理軟件。
點(diǎn)晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時(shí)間、不限用戶的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved