全部產品
Search
文件中心

Alibaba Cloud DNS:自建Nginx反向 Proxy實現HTTPS轉寄和解析連接埠隱藏

更新時間:Nov 04, 2025

通過在Elastic Compute Service上部署Nginx反向 Proxy,可自行控制請求轉寄規則以支援HTTPS協議的URL轉寄、連接埠代理等,彌補Alibaba Cloud DNS在URL轉寄協議支援缺失、無法配置解析到指定連接埠的不足。常規解析情境可通過添加解析記錄實現。

業務情境說明

Alibaba Cloud DNS提供的解析配置功能在特定情境下存在局限性:

  • 協議限制:由於認證管理機制,無法支援從HTTPSHTTPS的請求轉寄,導致用戶端訪問失敗。

  • 連接埠限制:DNS標準協議規定只能將網域名稱解析至IP地址,無法指定連接埠。若後端應用使用非標準連接埠(如3000),使用者訪問時必須在URL中手動加入連接埠號碼(如http://www.example.com:3000)。

方案架構

  • 原始鏈路:客戶通過網域名稱發起訪問請求。經由Local DNS遞迴查詢,擷取後端服務IP地址後,直接存取IP對應的後端服務。

  • 新鏈路:自建Nginx反向 Proxy後,Nginx作為流量入口和分發中樞,轉寄請求,整體訪問鏈路如下:

    1. 用戶端通過網域名稱發起訪問請求。經由Local DNS遞迴查詢,最終從權威DNS伺服器擷取指向Nginx伺服器的公網IP地址。

    2. 用戶端向該公網IP地址發送HTTP/HTTPS請求。

    3. Nginx伺服器接收到請求後,根據其設定檔中基於Host要求標頭(即訪問的網域名稱)的轉寄規則,將請求代理轉寄至對應的後端應用。

    4. 後端應用處理請求後將響應返回給Nginx,再由Nginx最終傳遞給用戶端。

實施步驟

以Alibaba Cloud Linux 3作業系統的Elastic Compute Service為例,介紹部署和配置流程。若已經在系統上部署了Nginx服務,可直接跳轉到步驟三:配置Nginx實現不同情境

步驟一:準備雲端服務器環境

  1. 參考控制台自訂購買並使用ECS執行個體,建立一台ECS執行個體。

    • 作業系統:選擇 Alinux 3。

    • 網路:確保已指派公網IP地址。

  2. 在執行個體的安全性群組配置中,添加入方向規則,允許存取TCP協議的2280443連接埠,用於SSH遠端連線和Web服務。

步驟二:安裝並啟動Nginx

  1. 使用SSH用戶端登入到ECS執行個體。

  2. 執行以下命令安裝Nginx。

    sudo yum install -y nginx
  3. 啟動Nginx服務並設定為開機自啟動。

    sudo systemctl start nginx
    sudo systemctl enable nginx
  4. 檢查Nginx服務狀態,確認其已成功運行。

    sudo systemctl status nginx

    若狀態顯示為 active (running),則表示服務啟動正常。

  5. 修改Nginx配置後,執行以下命令使配置生效。該命令會平滑重載配置,不中斷現有串連。

    sudo systemctl reload nginx

步驟三:配置Nginx實現不同情境

Nginx的核心配置位於/etc/nginx/nginx.conf,但最佳實務是將每個網站的獨立配置建立為.conf檔案並存放在/etc/nginx/conf.d/目錄下。以下為不同業務情境的配置樣本。

情境一:HTTPS協議的URL轉寄

DNS無法支援HTTPS協議到HTTPS協議的URL轉寄的根本原因:Alibaba Cloud DNS無法自訂上傳使用者HTTPS認證導致。通過自建Nginx,使用者可自行為原網域名稱配置有效SSL認證,並配置URL轉寄規則。

  • URL重新導向(顯性轉寄)

    https://example.com的訪問永久重新導向到https://aliyun.com,瀏覽器地址欄變成重新導向之後的地址。請在/etc/nginx/conf.d/redirect.conf檔案中添加以下內容:

    server {
        listen 443 ssl http2;
        server_name example.com;
    
        # 配置源網域名稱的SSL認證和私密金鑰
        ssl_certificate /etc/nginx/certs/example.com.fullchain.pem;
        ssl_certificate_key /etc/nginx/certs/example.com.key;
    
        location / {
            return 301 https://aliyun.com$request_uri;
        }
    }
  • 反向 Proxy(隱性轉寄)

    https://example.com網站的請求交由https://aliyun.com網域名稱處理,地址欄保持不變,但內容實際由其他後端服務提供。請在/etc/nginx/conf.d/proxy.conf檔案中添加以下內容:

    # 將對 example.com 的訪問代理到 aliyun.com
    server {
        listen 443 ssl http2;
        server_name example.com;
    
        # 配置源網域名稱的SSL認證和私密金鑰
        ssl_certificate /etc/nginx/certs/example.com.fullchain.pem;
        ssl_certificate_key /etc/nginx/certs/example.com.key;
    
        location / {
            # 將請求轉寄至目標伺服器
            proxy_pass http://aliyun.com;
    
            # 關鍵配置:將Host要求標頭設定為目標服務的網域名稱,確保後端能正確處理請求
            proxy_set_header Host "aliyun.com";
            
            # 傳遞用戶端真實IP地址,便於後端服務記錄和分析
            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;
        }
    }
    

情境二:網域名稱解析到指定連接埠

此配置使得運行在非標準連接埠(如3000)的應用能通過標準80連接埠訪問,解決了DNS的A記錄無法指定連接埠的問題。在/etc/nginx/conf.d/port_mapping.conf檔案中添加以下內容:

# 通過 example.com 訪問本地3000連接埠的服務
server {
    listen 80;
    server_name example.com;

    location / {
        # 將請求轉寄到本地(localhost)的3000連接埠
        proxy_pass http://127.0.0.1:3000;

        # 傳遞原始的Host要求標頭,以便後端應用能識別訪問的網域名稱
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

步驟四:配置DNS解析

完成了自建Nginx反向 Proxy服務的搭建和配置後,需要根據代理的服務和關聯的網域名稱,配置DNS解析。

  1. 準備好網域名稱,如還沒有購買網域名稱,請前往 阿里雲網域名稱註冊購買。若網域名稱關聯的網站需要部署在中國內地,請提前完成ICP備案

  2. 擷取部署Nginx反向 Proxy所在伺服器的公網IP地址,本案例中直接擷取ECS執行個體的公網IP地址。

    image

  3. 訪問Alibaba Cloud DNS-公網權威解析,找到目標網域名稱。

  4. 添加/修改解析記錄。

    1. 若之前未設定過解析記錄,則添加解析記錄,為每個在Nginx中配置的網域名稱(如example.com)建立一條A記錄,將其指向ECS執行個體的公網IP地址。

    2. 若已經存在解析記錄,則將原來的記錄值換成Nginx服務的公網IP地址即可,注意:修改解析記錄後,需要等待5-10分鐘,解析記錄才會陸續生效。

      image

成本與風險

  • 成本構成:主要成本來自運行Nginx所需的Elastic Compute Service執行個體,具體費用取決於所選執行個體的規格、地區和計費方式。Nginx為開源軟體。

  • 風險與維護:自建反向 Proxy服務需要自行承擔營運責任,包括定期更新作業系統和Nginx的安全補丁、監控服務健康狀態、備份設定檔等。配置不當或缺乏維護可能導致服務中斷或引入安全性漏洞。

  • 生產環境建議:對於生產環境,建議進一步強化Nginx的安全配置,並建立監控和日誌分析體系。

常見問題

Alibaba Cloud DNS是否支援連接埠解析?

如何將網域名稱指向另外一個網站?