我正在尝试使用 Nginx 从 VPS 提供大型文件(50-800mb)来托管游戏服务器的地图文件。奇怪的是,在游戏或浏览器中下载地图文件时,我的速度只有 ~15mbps。在另一台机器(同一网络)上通过 CURL 或 WGET 下载时,我的速度达到 60mbps(我的最大值)。我尝试了各种设置(sendfile on、max_chunk_size、directio 等),它们之间的行为没有任何变化。这是我目前的配置:
user www-data;
worker_processes 2;
error_log /var/log/nginx/error.log notice;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
#access_log /var/log/nginx/access.log main;
access_log off;
keepalive_timeout 65;
#gzip on;
#gzip_types application/octet-stream;
include /etc/nginx/conf.d/*.conf;
}
server {
listen 80;
server_name localhost;
#access_log /var/log/nginx/host.access.log main;
access_log off;
root /var/www/home;
index index.html;
location / {
}
location ^~ /kf2 {
alias /var/www/kf2;
autoindex on;
}
location ^~ /img {
alias /var/www/img;
}
}
我目前已删除 sendfile 进行测试,但启用它无论如何也没什么区别。使用 WGET 下载到本地主机的速度超过 200mbps,所以我不认为这是磁盘 I/O 限制。我在这里不知所措,无法解释 curl/wget 和通过浏览器下载之间的差异。任何帮助都非常感谢。