Nginx repentinamente lento para descargar archivos

Nginx repentinamente lento para descargar archivos

Desde hace una semana, Nginx se volvió terriblemente lento para descargar archivos pequeños y entregar mi contenido. Por ejemplo, descargar un archivo de 500 kb pasa de ms a 6 segundos en el mismo servidor. se siente como si lo estuvieran estrangulando de alguna manera. Lo extraño aquí es que no cambié ningún archivo de configuración de Nginx en los últimos meses.

Entonces verifiqué si hay algo con mi servidor. Subí y descargué un archivo a través de sftp y alcancé 900 MB/s en una conexión de 1 GB. También verifiqué el uso de la CPU y el disco, pero todo parece estar bien.

Hice algunas pruebas con Postman y veo que el tiempo para la respuesta HTTP real es de algunos ms, pero después de descargar el archivo lleva mucho tiempo.

También es extraño que esto suceda cuando uso HTTP y no HTTPS. HTTPS funciona completamente bien en la red local, pero si descargo el mismo archivo a través de HTTPS desde fuera de nuestra red, vuelve a ser lento. HTTP siempre es lento.

No estoy seguro de qué hacer ahora ni qué más puedo comprobar. También creé una nueva máquina virtual de Ubuntu con la misma configuración y tengo el mismo problema allí, así que supongo que es algo relacionado con la configuración, pero no sé qué.

Aquí está mi archivo nginx.conf

user www-data;
worker_processes auto;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;


events {
    worker_connections 768;
    # multi_accept on;
}

http {

    ##
    # Basic Settings
    ##

    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;
    keepalive_timeout 65;
    types_hash_max_size 2048;
    # server_tokens off;

    # server_names_hash_bucket_size 64;
    # server_name_in_redirect off;

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

    ##
    # 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_vary on;
     gzip_proxied any;
     gzip_comp_level 6;
     gzip_buffers 16 8k;
     gzip_http_version 1.1;
         gzip_min_length 256;
     #gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
         gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/vnd.ms-fontobject application/x-font-ttf font/opentype image/svg+xml image/x-icon;
    ##
    # Virtual Host Configs
    ##

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

        ### Include a blocklist file
        include /etc/nginx/nginx-acces.conf;
}


#mail {
#   # See sample authentication script at:
#   # http://wiki.nginx.org/ImapAuthenticateWithApachePhpScript
# 
#   # auth_http localhost/auth.php;
#   # pop3_capabilities "TOP" "USER";
#   # imap_capabilities "IMAP4rev1" "UIDPLUS";
# 
#   server {
#       listen     localhost:110;
#       protocol   pop3;
#       proxy      on;
#   }
# 
#   server {
#       listen     localhost:143;
#       protocol   imap;
#       proxy      on;
#   }
#}

Esta es una de mis configuraciones habilitadas para sitios:

server {
    server_name resources.example.io www.resources.example.io;
    location / {
        proxy_set_header X-Forwarded-Host $host;
        proxy_set_header X-Forwarded-Server $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://192.168.1.105:8083;
        allow all;
    }


    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/resources.example.io/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/resources.example.io/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

}

server {
    if ($host = resources.example.io) {
        return 301 https://$host$request_uri;
    } # managed by Certbot


    server_name resources.example.io www.resources.example.io;
    listen 80;
    return 404; # managed by Certbot


}

información relacionada