Angular를 사용하는 Nginx 리버스 프록시의 느린 TTFB(60초)

Angular를 사용하는 Nginx 리버스 프록시의 느린 TTFB(60초)

문제의 서버는 역방향 프록시를 통해 Angular 애플리케이션을 제공하는 Ubuntu 16.04를 실행하고 있습니다. 기본 페이지에 연결하면 모든 페이지를 로드하는 데 시간이 오래 걸리지는 않지만 일부 페이지는 확실히 로드됩니다. 즉https://mysite/admin페이지. 페이지의 다른 모든 측면은 표시되지만 페이지에 표시되지 않는 누락된 js 버튼도 있습니다. 우리 사이트는 js 스크립트를 사용하여 트래픽을 라우팅하도록 구축되었지만 이것은 60초 TTFB를 가진 파일 중 하나입니다!(느린 TTFB를 가진 대부분의 파일은 js입니다) 전체 애플리케이션이 역방향 프록시 없이는 작동하지 않지만, 다음을 확인할 수 있습니다. 그것은 유효하지 않습니다. 또한 사이트의 TTFB가 처음 로드된 후 항상 60초가 되는 것은 아니지만 시크릿 창에 로드될 때는 항상 유지된다는 점을 추가하는 것이 도움이 될 수 있습니다.

nginx.conf

user www-data;
worker_processes 1;
pid /run/nginx.pid;
events {
        worker_connections 1024;
}

http {
    proxy_cache_path /etc/nginx-cache levels=1:2 keys_zone=backcache:8m max_size=50m;                                                                                                                                                         
    proxy_cache_key "$scheme$request_method$host$request_uri$is_args$args";
    proxy_cache_valid 200 302 10m;
    proxy_cache_valid 404 1m;

    client_body_buffer_size 10K;
    client_header_buffer_size 1k;
    client_max_body_size 8m;
    large_client_header_buffers 2 1k;

    upstream mysite {
            server [::]:1337;
     }


    ##
    # Basic Settings
    ##

    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;
    keepalive_timeout 65;
    types_hash_max_size 2048;

    include /etc/nginx/mime.types;
    default_type application/octet-stream;

    #Looked at 12/4
    #fastcgi_buffers 8 16k;
    #fastcgi_buffer_size 32k;

    #client_max_body_size 24M;
    #client_body_buffer_size 128k;

    ##
    # SSL Settings
    ##

    ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
    ssl_prefer_server_ciphers on;

    ##
    # Logging Settings
    ##

    access_log /var/log/nginx/access.log;
    error_log /var/log/nginx/error.log;

    ##
    # Gzip Settings
    ##

    gzip on;
    gzip_disable "msie6";
     application/javascript                                                                                                                                                              text/xml application/xml application/xml+rss text/javascript;

    ##
    # Virtual Host Configs
    ##

    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;
}

사이트 활성화/default.conf

server {
        listen 80 default_server;
        listen [::]:80 default_server;
        listen 443 ssl http2; # managed by Certbot
        ssl_certificate /etc/letsencrypt/live/mysite.net-0001/fullchain.pem; # managed by Certbot
        ssl_certificate_key /etc/letsencrypt/live/mysite.net-0001/privkey.pem; # managed by Certbot

        root /home/admin_user/root;

        index index.html index.htm index.nginx-debian.html;

        server_name mysite.net;

        proxy_buffering on;
        proxy_buffer_size 1k;
        proxy_buffers 24 4k;
        proxy_busy_buffers_size 8k;
        proxy_max_temp_file_size 2048m;
        proxy_temp_file_write_size 32k;

        location / {
                sendfile on;
                tcp_nopush on;
                tcp_nodelay on;
                proxy_cache backcache;
                proxy_cache_bypass $http_cache_control;
                add_header X-Proxy-Cache $upstream_cache_status;

                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection 'upgrade';
                proxy_set_header Host $host;

                proxy_http_version 1.1;
                proxy_set_header Connection "";
                proxy_pass http://localhost:1337;
    }
}

답변1

좋아요, 귀하의 메시지에 따르면 역방향 프록시에 대해 복사하여 붙여넣은 nginx 구성 설정이 있는 것 같습니다.

구성에는 다음 스탠자가 있습니다.

location / {
            sendfile on;
            tcp_nopush on;
            tcp_nodelay on;
            proxy_cache backcache;
            proxy_cache_bypass $http_cache_control;
            add_header X-Proxy-Cache $upstream_cache_status;

            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection 'upgrade';
            proxy_set_header Host $host;

            proxy_http_version 1.1;
            proxy_set_header Connection "";
            proxy_pass http://localhost:1337;
}

이는 아래에 있는 항목에 대해 귀하의 의견에서 아마도 존재하지 않는 /요청을 보내라는 의미입니다 . localhost:1337Nginx에는 60초의 시간 제한이 있으므로 그렇게 오랫동안 기다린 다음 다음 시간에 파일을 다시 전달하는 것으로 추측됩니다./home/admin_user/root

당신이해야 할 일은 구성을 다음과 같이 변경하는 것입니다.

server {
        listen 80 default_server;
        listen [::]:80 default_server;
        listen 443 ssl http2; # managed by Certbot
        ssl_certificate /etc/letsencrypt/live/mysite.net-0001/fullchain.pem; # managed by Certbot
        ssl_certificate_key /etc/letsencrypt/live/mysite.net-0001/privkey.pem; # managed by Certbot

        index index.html index.htm index.nginx-debian.html;

        server_name mysite.net;

        location / {
            root /home/admin_user/root;
        }
    }

각도는 클라이언트측에서 렌더링되는 애플리케이션이므로 프록시되는 지원 서버가 없습니다. 따라서 자산을 /home/admin_user/root.

관련 정보