Langsame TTFB (60 Sekunden) auf Nginx Reverse Proxy mit Angular

Langsame TTFB (60 Sekunden) auf Nginx Reverse Proxy mit Angular

Auf dem betreffenden Server läuft Ubuntu 16.04, das eine Angular-Anwendung über einen Reverse-Proxy bereitstellt. Sobald Sie sich mit der Hauptseite verbinden, dauert das Laden nicht bei allen Seiten gleich lange, bei manchen jedoch schon. Nämlich diehttps://meinesite/adminSeite. Auch hier fehlen einige JS-Schaltflächen, die nicht auf der Seite angezeigt werden, obwohl alle anderen Aspekte der Seite angezeigt werden. Unsere Site ist so aufgebaut, dass der Datenverkehr mit einem JS-Skript weitergeleitet wird, aber dies ist eine der Dateien mit einer TTFB von 60 Sekunden! (Die meisten Dateien mit langsamer TTFB sind JS.) Obwohl die gesamte Anwendung ohne Reverse-Proxy nicht funktioniert, kann ich bestätigen, dass dies nicht der Fall ist, wenn dieser nicht aktiviert ist. Darüber hinaus kann es hilfreich sein, hinzuzufügen, dass die TTFB auf der Site nach dem ersten Laden nicht immer 60 Sekunden beträgt, jedoch immer, wenn sie in einem Inkognito-Fenster geladen wird.

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/*;
}

sites-enable/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;
    }
}

Antwort1

Okay, Ihrer Nachricht zufolge denke ich, dass Sie eine kopierte und eingefügte Nginx-Konfiguration für einen Reverse-Proxy haben.

Ihre Konfiguration hat die folgende Strophe:

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;
}

Dies bedeutet: Für alles unter /senden Sie die Anfrage an die localhost:1337Adresse, die in Ihrem Kommentar angegeben ist, die wahrscheinlich nicht existiert. Nginx hat ein Timeout von 60 Sekunden, daher gehe ich davon aus, dass es so lange wartet und dann auf die Zustellung der Dateien zurückgreift./home/admin_user/root

Sie müssen Ihre Konfiguration wie folgt ändern:

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;
        }
    }

Da Angular eine clientseitig gerenderte Anwendung ist, haben Sie keinen Backing-Server, der geproxied wird. Liefern Sie die Assets daher einfach in /home/admin_user/root.

verwandte Informationen