簡體   English   中英

AWS ELB + nginx 反向代理 HTTP 504

[英]AWS ELBs + nginx reverse proxy HTTP 504

我在 Fargate 容器中有一個 node/express 應用程序,除了托管 API 之外,它還提供 static 文件 (html/css/js)。 它前面的網絡組件如下所示:

(WAN) ---> (HTTPS HTTP/2) Proxy ELB ---> (HTTP HTTP/1) nginx reverse proxy ---> (HTTPS HTTP/1) App ELB ---> Fargate container

這可能不是標准堆棧,但它符合 HIPPA,這對於我們的應用程序是必需的。

在此鏈中的某個點,在響應對靜態服務文件的請求時,連接會間歇性地斷開。 它似乎重復發生在同一個文件上(比如 main.js 文件,但發生在一個 377 字節的圖標上),並且大約每十次我嘗試加載該站點就會發生一次。 在 Chrome DevTools 中,我可以看到該請求等待了 60 秒,之后我從鏈中的一個 ELB 獲得了 HTTP 504。 我可以更改 ELB 的超時並獲得 HTTP 502,因為 ELB 沒有超時。

我一直在試圖追查這個問題,包括擺弄應用程序本身(升級快遞,盡可能多地窺視以查看連接/套接字何時打開和關閉)並且我確信應用程序本身不是問題(另外,我在 3 個環境中托管應用程序;這個問題發生在其中 2 個環境中。此外,我們使用相同網絡堆棧部署的其他節點/快速應用程序工作正常)。 我開始確信問題出在 AWS ELB、nginx 或它們之間的一些復雜交互上。

nginx.conf(相關部分):

        proxy_http_version 1.1;
        proxy_set_header Connection "";
        proxy_set_header X-Forwarded-Proto $scheme;
        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 Authorization $http_authorization;
        proxy_pass_header  Authorization;

        gzip on;
        gzip_types      text/plain application/xml application/javascript;
        gzip_proxied    no-cache no-store private expired auth;
        gzip_min_length 1000;

        if ( $http_x_forwarded_proto != 'https' ) {
            return 301 https://<site URL>$request_uri;
        }
        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;

        location  / {
            proxy_pass https://<app ELB>;
        }

任何幫助是極大的贊賞!

也許我對一個類似問題的回答可能會有所幫助(或沒有 -> 對不起) https://stackoverflow.com/a/66694872/15385504

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM