全部產品
Search
文件中心

Serverless App Engine:使用SAE部署Nginx服務

更新時間:Sep 12, 2025

Nginx可以用於搭建靜態網站,也可以實現反向 Proxy(將用戶端的請求轉寄到其他後端應用)。本文將指引您使用SAE部署Nginx服務。

方案概覽

如下圖所示,Nginx能夠根據用戶端請求的路徑,返回應用自身包含的靜態資源(如HTML頁面),或者將請求轉寄到其他後端應用,並將處理結果返回給用戶端。

如果您期望僅搭建靜態網站,也可以通過部署Nginx服務來實現。這種情況下,您無需部署後端應用,Nginx配置中也無需包含轉寄規則。

1. 準備靜態網站資源

本文使用以下樣本檔案:nginx-demo.zip

其中,html/路徑下包含本例中使用的靜態網站資源:

  • index.html:預設首頁。

  • error.html:預設404錯誤頁面。

實際環境中,請根據您的需求建立靜態網站資源(如HTML頁面、圖片、CSS樣式等)。

2. 編寫Nginx設定檔

樣本中的conf/路徑下包含Nginx的設定檔nginx.conf,相關說明如下。

實際環境中,請根據您的需求修改Nginx設定檔。更多資訊,請參考Nginx官方文檔

配置靜態資源訪問規則

...
    server {
        listen       80 default_server; # 設定Web服務的監聽連接埠為80
        ...
        root         /usr/share/nginx/html;
        include /etc/nginx/default.d/*.conf;

        # 用戶端訪問根路徑時需要返回的頁面
        location / {
            root /usr/share/nginx/html; # 容器中存放靜態網站資源的路徑。製作鏡像時會將本地的靜態網站資源複製到鏡像內的這個路徑中。
            index index.html;
        }

        # 用戶端訪問出現404錯誤時需要返回的頁面
        error_page 404 /error.html;
        location = /error.html {
            root /usr/share/nginx/html;
        }
    }
...

配置轉寄規則

本文假定您已部署後端應用,並可以從公網訪問後端應用。

樣本中,後端應用的訪問地址和連接埠是121.40.xx.xx:80,期望將請求路徑匹配/api/*的請求轉寄到後端應用,並且轉寄時將請求路徑重新導向為/*,則配置如下:

...
        # 配置請求轉寄規則
        location /api/ {
            proxy_pass http://121.40.xx.xx:80/;
        }
...
如果您期望僅搭建靜態網站,則無需配置轉寄規則。
如果部署後的Nginx服務可以通過VPC網路訪問到後端應用,則轉寄規則中可以使用私網IP。

3. 製作鏡像並上傳到鏡像倉庫

您可以在本地環境或ECS環境中製作鏡像,前提是環境中已安裝Docker工具。
  1. 編寫Dockerfile檔案。樣本中Dockerfile檔案的說明如下:

    # 指定Nginx基礎鏡像
    FROM nginx:1.20.2
    
    # 複製本地的Nginx設定檔到容器環境的指定路徑
    COPY conf/nginx.conf /etc/nginx/nginx.conf
    
    # 複製本地的靜態資源檔案到容器環境的指定路徑
    COPY html /usr/share/nginx/html
  2. 構建鏡像。在Dockerfile檔案所在路徑執行以下命令:

    docker build . -t my-nginx:1.0
    # .:表示在目前的目錄中構建鏡像
    # -t:指定鏡像名稱、鏡像tag
  3. 測試鏡像。

    # 運行鏡像
    docker run -d -p 80:80 my-nginx:1.0
    
    # 需要環境中已安裝curl命令
    # 測試靜態資源訪問
    curl localhost:80/
    # 測試將請求轉寄到後端應用(僅適用於Nginx服務通過公網IP轉寄到後端應用的情境)
    curl localhost:80/api/
  4. 將製作成功的鏡像推送至阿里雲ACR鏡像倉庫。具體操作,請參考推送拉取鏡像(企業版)推送拉取鏡像(個人版)

4. 通過鏡像部署Nginx並配置網路訪問

  1. 通過已推送到ACR中的鏡像部署Nginx服務。具體操作,請參考使用鏡像部署應用

  2. 如果希望Nginx服務能夠將請求轉寄到後端應用的公網地址,需要為Nginx服務所在的VPC配置NAT Gateway(預設情況下,部署在SAE的應用是無法訪問公網的)。具體操作,請參考配置公網NAT Gateway使SAE應用能訪問公網

    如果Nginx服務轉寄請求時使用後端應用的私網地址,則無需配置NAT Gateway。
  3. 為Nginx服務配置公網訪問地址,使用戶端可以通過公網IP訪問Nginx服務。具體操作,請參考為應用綁定CLB並產生應用的公網或私網訪問IP容器連接埠需要設定為80

    如果您希望用戶端通過網域名稱訪問Nginx服務,則需要為公網IP佈建網域名解析。
  4. 通過瀏覽器訪問Nginx服務,進行測試。

5. (可選)應用部署後修改Nginx設定檔

修改Nginx設定檔無需重新構建鏡像,您可以通過ConfigMap向容器中注入設定檔的方式實現組態管理,提高效率。

重要

通過ConfigMap注入到容器中的設定檔會覆蓋容器中的原始設定檔。

  1. 在Nginx應用所在的命名空間中建立配置項(ConfigMap)。具體操作,請參考建立配置項(ConfigMap)配置項名稱設定為nginx,添加變數nginx.conf(即Nginx設定檔名),變數的值為修改後的設定檔內容。

    lQEe08Yf6s

  2. 通過ConfigMap注入設定檔,並重新部署應用。具體操作,請參考注入配置資訊配置項選擇上一步中建立的nginx選擇nginx.conf掛載路徑設定為/etc/nginx/nginx.conf(即鏡像中Nginx設定檔的路徑)。

    8qK49P9SJq

  3. 應用部署成功後,可以通過Webshell登入到具體的應用執行個體中,查看設定檔是否修改成功。

    p7GRcntPRp