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

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

Nginx 共用一個公網(wǎng)IP實現(xiàn)多域名轉(zhuǎn)發(fā)映射的原理和實戰(zhàn)

admin
2025年7月21日 0:11 本文熱度 178

一、Nginx 多域名轉(zhuǎn)發(fā)的原理

在實際產(chǎn)品架構(gòu)中,常常需要在同一臺服務(wù)器/同一 IP 地址上部署多個網(wǎng)站或服務(wù)。Nginx 的多域名轉(zhuǎn)發(fā)功能可以很好地解決這個問題。它的原理是:Nginx 會讀取每個 HTTP 請求里的 Host 頭,根據(jù)這個信息判斷用戶想訪問哪個域名。只要把不同域名的 DNS A 記錄都指向這臺服務(wù)器的 IP,Nginx 就能區(qū)分并把請求分發(fā)到對應(yīng)的站點或后端服務(wù)。

應(yīng)用場景如下:

一臺服務(wù)器一個 IP,就能掛多個域名(也就是常說的基于名稱的虛擬主機(jī))。Nginx 配置里,每個站點有獨立的 server 塊。不同域名可以連到不同的后端應(yīng)用或端口。Nginx 會根據(jù)域名,把流量反向代理到對應(yīng)的本地服務(wù)或者端口上。這種做法在容器編排環(huán)境里也很常見,比如 Kubernetes 的 Ingress 資源,也是通過域名(Host)來做流量路由,讓多個服務(wù)共享一個負(fù)載均衡 IP。

二、配置示例講解

如上圖所示:多個域名(比如?oi.example.chat、apexample.chat**、adexample.chat** 等)都把 DNS 解析指向同一臺服務(wù)器的 IP。這臺服務(wù)器上,Nginx 監(jiān)聽 80 和 443 端口,接收所有進(jìn)來的請求,再根據(jù)每個請求的?Host?字段,把流量轉(zhuǎn)發(fā)到不同端口上的本地服務(wù)。

在這個例子里,oi.example.chatapexample.chat?和?adexample.chat?這幾個域名的 A 記錄都指向同一個 IP。用戶訪問時,請求頭里的?Host?信息不一樣,Nginx 能識別目標(biāo)域名,從而套用不同的轉(zhuǎn)發(fā)規(guī)則。這樣一來,即使共用一個外網(wǎng) IP,各自的流量也能準(zhǔn)確分流,不會混淆,分別進(jìn)入自己的應(yīng)用。

說白了,Nginx 在這里就相當(dāng)于一個反向代理網(wǎng)關(guān),把外部的多域名訪問都收進(jìn)來,再按域名分流到不同的內(nèi)部服務(wù)。這么做,不光讓服務(wù)器資源用得更充分,管理起來也省事不少——只需開放 80 和 443 兩個端口,就能同時支持多個網(wǎng)站。另外還能設(shè)置禁止直接用 IP 訪問,防止繞過域名,也更安全。


三、Nginx 多域名配置示例

假如現(xiàn)在有這樣一個需求:一臺服務(wù)器上,用 Nginx 分別轉(zhuǎn)發(fā)這三個域名的流量——

  • ??oi.example.chat:轉(zhuǎn)到本地 3000 端口(比如網(wǎng)頁應(yīng)用,支持 WebSocket)。
  • ??api.example.chat:轉(zhuǎn)到本地 4000 端口(HTTP API 服務(wù))。
  • ??admin.example.chat:轉(zhuǎn)到本地 5000 端口(后臺管理頁面)。

具體的 Nginx 配置如下。oi.example.chat?這里多加了幾行,是為了讓 WebSocket(比如 Socket.IO)能正常轉(zhuǎn)發(fā)。其他兩個就是常規(guī)的 HTTP 代理:

# 對應(yīng) oi.example.chat 的配置(含 WebSocket 支持)
server?{
? ??listen80;
? ??server_name?oi.example.chat;

? ??# WebSocket 接口轉(zhuǎn)發(fā)配置
? ??location?/ws/ {
? ? ? ??proxy_pass?http://127.0.0.1:3000;
? ? ? ??# WebSocket 必需的頭設(shè)置
? ? ? ??proxy_http_version1.1;
? ? ? ??proxy_set_header?Upgrade?$http_upgrade;
? ? ? ??proxy_set_header?Connection?"upgrade";

? ? ? ??# 保留客戶端請求的關(guān)鍵信息轉(zhuǎn)發(fā)給后端
? ? ? ??proxy_set_header?Host?$host;
? ? ? ??proxy_set_header?X-Real-IP?$remote_addr;
? ? ? ??proxy_set_header?X-Forwarded-For?$proxy_add_x_forwarded_for;
? ? }

? ??# 普通 HTTP 請求轉(zhuǎn)發(fā)配置
? ??location?/ {
? ? ? ??proxy_pass?http://127.0.0.1:3000;
? ? ? ??proxy_set_header?Host?$host;
? ? ? ??proxy_set_header?X-Real-IP?$remote_addr;
? ? ? ??proxy_set_header?X-Forwarded-For?$proxy_add_x_forwarded_for;
? ? }
}

# 對應(yīng) api.example.chat 的配置(一般 HTTP API 服務(wù))
server?{
? ??listen80;
? ??server_name?api.example.chat;

? ??location?/ {
? ? ? ??proxy_pass?http://127.0.0.1:4000;
? ? ? ??proxy_set_header?Host?$host;
? ? ? ??proxy_set_header?X-Real-IP?$remote_addr;
? ? ? ??proxy_set_header?X-Forwarded-For?$proxy_add_x_forwarded_for;
? ? }
}

# 對應(yīng) admin.example.chat 的配置(后臺管理服務(wù))
server?{
? ??listen80;
? ??server_name?admin.example.chat;

? ??location?/ {
? ? ? ??proxy_pass?http://127.0.0.1:5000;
? ? ? ??proxy_set_header?Host?$host;
? ? ? ??proxy_set_header?X-Real-IP?$remote_addr;
? ? ? ??proxy_set_header?X-Forwarded-For?$proxy_add_x_forwarded_for;
? ? }
}

上述配置中,三個?server?段共用同一個監(jiān)聽端口 80,但通過?server_name?區(qū)分三個域名,各自指定了不同的轉(zhuǎn)發(fā)目標(biāo)(本地不同端口的服務(wù))。這樣就實現(xiàn)了一個 IP 上基于域名的虛擬主機(jī)路由。需要注意,如果有HTTPS需求,還需對應(yīng)增加?listen 443 ssl?的配置和證書。下面我們詳細(xì)解釋配置中涉及的核心指令。

四、配置中核心指令說明

指令/配置項
作用解釋
注意事項
server_name
定義當(dāng)前?server?塊匹配的域名。
支持通配符,例如?*.example.com。
listen 80;
定義監(jiān)聽端口。HTTP 默認(rèn)為 80,HTTPS 為 443。
可以指定監(jiān)聽的 IP,比如?listen 192.168.1.100:80;
proxy_pass
定義轉(zhuǎn)發(fā)(反向代理)的目標(biāo)后端地址。
支持填寫 IP+端口,或域名+端口。
proxy_set_header Host $host;
將客戶端請求中的域名傳遞給后端服務(wù)。
很多后端服務(wù)需要根據(jù)該頭識別請求域名,以返回正確的站點內(nèi)容。
proxy_http_version 1.1;
將轉(zhuǎn)發(fā)協(xié)議升級為 HTTP/1.1。WebSocket 必須。
WebSocket 必備
,否則無法完成協(xié)議升級。
proxy_set_header Upgrade $http_upgrade;

proxy_set_header Connection "upgrade";
專門用于支持 WebSocket 協(xié)議的頭設(shè)置,將 HTTP 連接升級為 WS。
若缺少這兩行,WebSocket 無法正常工作(無法成功升級連接)。

這些配置一起實現(xiàn)了域名轉(zhuǎn)發(fā):Nginx 收到外部請求后,會把請求“透明”地轉(zhuǎn)發(fā)給對應(yīng)的內(nèi)部服務(wù),同時把原始的域名和客戶端 IP 等信息也帶過去。這樣,后端服務(wù)就能通過 Host 頭等信息識別是哪個域名的請求,方便后續(xù)做對應(yīng)處理。

五、額外的注意事項

  • ??DNS 配置:要讓域名轉(zhuǎn)發(fā)生效,先把所有要用的域名都解析到 Nginx 服務(wù)器的同一個 IP(通常是在域名服務(wù)商后臺加 A 記錄)。DNS 配好了,用戶才能用域名正常訪問你的服務(wù)。
  • ??默認(rèn)主機(jī)服務(wù):如果有些請求的域名沒有出現(xiàn)在任何?server_name?里,Nginx 會把這些請求交給默認(rèn)主機(jī)處理(一般是配置文件里第一個?server?塊,或者寫了?default_server?的那個)。建議專門加一個默認(rèn)服務(wù)器,要么返回錯誤頁面,要么直接斷開連接(比如用 444 狀態(tài)碼)。這樣能防止有人用沒授權(quán)的域名或者直接用 IP 訪問你的服務(wù),提高安全性。
  • ??HTTPS 和證書:生產(chǎn)環(huán)境下,多個域名一般都要支持 HTTPS??梢苑謩e給每個域名配證書和私鑰,綁定到對應(yīng)的 443 端口上。Nginx 支持 SNI 技術(shù),可以讓一臺服務(wù)器、一個端口(443),同時掛載多個域名證書,這樣就能讓所有域名都走 HTTPS。證書可以用免費(fèi)的 Let’s Encrypt,也可以用其他機(jī)構(gòu)頒發(fā)的。


閱讀原文:原文鏈接


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