nginx:重定向到啟用了 https 的 docker 容器

nginx:重定向到啟用了 https 的 docker 容器

我有兩個容器在 EC2 執行個體中運行,第一個使用連接埠 4200,第二個使用連接埠 8188。我的目標是透過網域和安全連線存取這些容器,因此我採取了以下步驟。

  • 在每個容器中新增兩個不同的網域,名為「app1.my-domaine.com」和「app2.my-domaine.com」(每個網域將被帶到不同的容器)
  • 安裝後可以加密證書
  • 在 EC2 執行個體上安裝 nginx 伺服器
  • 我新增了以下配置來啟用 https 並將來自網域的請求轉送到這樣的容器。
server {
    listen 80;
    server_name my-domaine.com;
    return 301 https://$host$request_uri;
}

server {
    listen       443 ssl http2;
    listen       [::]:443 ssl http2;
    server_name  app1.my-domaine.com;
    port_in_redirect on;

    ssl_certificate "/etc/letsencrypt/live/my-domaine.com/fullchain.pem";
    ssl_certificate_key "/etc/letsencrypt/live/my-domaine.com/privkey.pem";

    location / {
        proxy_pass http://127.0.0.1:4200;
    }

    # added this to redirect any path to the container as well
    location ~ ^/([^/]+)(/.*)?$ {
        proxy_pass http://127.0.0.1:4200$1$2;
    }
}

server {
    listen       443 ssl http2;
    listen       [::]:443 ssl http2;
    server_name  app2.my-domaine.com;
    port_in_redirect on;

    ssl_certificate "/etc/letsencrypt/live/my-domaine.com/fullchain.pem";
    ssl_certificate_key "/etc/letsencrypt/live/my-domaine.com/privkey.pem";

    location / {
        proxy_pass http://127.0.0.1:8188;
    }

    location ~ ^/([^/]+)(/.*)?$ {
        proxy_pass http://127.0.0.1:8188$1$2;
    }
}

我遇到的問題是載入 .js、.css 或 .json 檔案等檔案時出現錯誤訊息,儘管我已包含此區塊:

location ~ ^/([^/]+)(/.*)?$ {
        proxy_pass http://127.0.0.1:8188$1$2;
}

當我新增網域路徑(例如「app1.my-domaine.com/admin」)時,我也會收到 nginx 的預設 404 錯誤頁面。對於如何確保所有請求(包括任何路徑或檔案)都路由到適當的容器,您有什麼建議嗎?

更新 我已經改變了這個

location ~ ^/([^/]+)(/.*)?$ {
        proxy_pass http://127.0.0.1:8188$1$2;
}

對此

location ~ ^/([^/]+)(/.*)?$ {
        proxy_pass http://127.0.0.1:8188/$1$2;
}

CSS 和 JS 檔案已正確加載,但仍有一個問題。當我去https://app1.my-domain.com/admin在瀏覽器中,它將我重新導向到 127.0.0.1:4200/admin。這意味著 nginx 正在重新導向請求而不是代理它。

相關內容