首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

域名解析到帶端口的本地服務:Nginx 反向代理實戰

     編輯:程式設計綜合問答

問題本質

域名解析**只能映射到 IP 地址**,**不能直接指定端口**。訪問 www.test.com 默認走 80 端口,而服務跑在 168.0.0.1:8080/webRoot/login.jsp。

標準解決架構:Nginx 反向代理

用戶 → www.test.com:80 → Nginx (80) → proxy_pass https://127.0.0.1:8080/webRoot/login.jsp → 後端服務

Nginx 配置示例

server {
    listen 80;
    server_name www.test.com;

    location / {
        proxy_pass https://127.0.0.1:8080/webRoot/;  # 注意結尾斜杠
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

關鍵細節

配置項作用
proxy_pass .../webRoot/將請求轉發到後端上下文路徑,**結尾斜杠決定是否保留原 URI 部分**
proxy_set_header Host傳遞原始 Host,後端可識別虛擬主機
X-Forwarded-For透傳客戶端真實 IP,後端日誌/限流依賴此頭

替代方案對比

方案優點缺點適用場景
Nginx 反向代理標準、高性能、支持 HTTPS/負載均衡/緩存需額外部署 Nginx**生產環境首選**
Tomcat 修改 server.xml <Connector port="80">無中間層需 root 權限綁 80 端口、多應用端口衝突、HTTPS 配置繁瑣單應用測試環境
應用內嵌重定向代碼控制暴露內部結構、SEO 不友好、雙重請求不推薦
云服務商 URL 轉發免運維多為 302 跳轉、不支持路徑透傳、HTTPS 支持弱靜態頁/簡單跳轉

HTTPS 升級(Let's Encrypt 免費證書)

# 安裝 certbot
sudo apt install certbot python3-certbot-nginx
# 自動申請證書並修改 Nginx 配置
sudo certbot --nginx -d www.test.com
# 續期自動化
sudo systemctl enable certbot.timer

本地測試驗證

  1. 修改 C:\Windows\System32\drivers\etc\hosts:
    127.0.0.1 www.test.com
  2. 瀏覽器訪問 https://www.test.com → 應直接顯示 /webRoot/login.jsp 內容,地址欄保持 www.test.com。

**域名解析到 IP + Nginx 反代到端口/路徑**,是暴露內部服務的工業級標準做法。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved