Seit einer Woche ist Nginx beim Herunterladen kleiner Dateien und beim Bereitstellen meiner Inhalte schrecklich langsam geworden. Beispielsweise dauerte das Herunterladen einer 500-KB-Datei auf demselben Server von ms auf 6 Sekunden. Es fühlt sich an, als würde es irgendwie gedrosselt. Das Seltsame daran ist, dass ich in den letzten Monaten keine Konfigurationsdateien von Nginx geändert habe.
Ich habe also überprüft, ob es etwas mit meinem Server zu tun hat. Ich habe eine Datei per SFTP hoch- und heruntergeladen und erreiche 900 MBit/s bei einer 1-GB-Verbindung. Ich habe auch die CPU- und Festplattenauslastung überprüft, aber alles scheint in Ordnung zu sein.
Ich habe einige Tests mit Postman durchgeführt und festgestellt, dass die Zeit für die eigentliche HTTP-Antwort einige ms beträgt, das anschließende Herunterladen der Datei aber lange dauert.
Es ist auch seltsam, dass dies passiert, wenn ich HTTP und nicht HTTPS verwende. HTTPS funktioniert im lokalen Netzwerk völlig einwandfrei, aber wenn ich dieselbe Datei über HTTPS von außerhalb unseres Netzwerks herunterlade, ist es wieder langsam. HTTP ist immer langsam.
Ich bin mir nicht sicher, was ich jetzt tun soll oder was ich sonst noch überprüfen kann. Ich habe auch eine neue Ubuntu-VM mit derselben Konfiguration erstellt und habe dort dasselbe Problem. Ich vermute also, dass es etwas mit der Konfiguration zu tun hat, aber ich weiß nicht, was.
Hier ist meine nginx.conf-Datei
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;
# }
#}
Dies ist eine meiner Site-fähigen Konfigurationen:
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
}