Linux 下 Nginx 访问缓慢是一个常见但原因较多的问题,通常需要从网络、系统、Nginx 配置、后端、资源几个层面排查。下面按常见原因 → 排查方法 → 解决建议给你系统梳理。
排查
ping 域名或IP
mtr 域名或IP
traceroute 域名
解决
Nginx 使用域名做 proxy_pass 或 upstream 时,DNS 解析慢会导致请求卡住。
排查
dig 域名
nslookup 域名
解决
resolver 并加缓存worker_processes 1;
解决
worker_processes auto;
worker_connections 1024;
keepalive_timeout 65;
可能问题
建议
worker_connections 10240;
keepalive_timeout 30;
location / {
proxy_pass http://backend;
}
每次请求都新建连接,非常慢。
优化
upstream backend {
server 127.0.0.1:8080;
keepalive 32;
}
location / {
proxy_pass http://backend;
proxy_http_version 1.1;
proxy_set_header Connection "";
}
Nginx 本身很快,但:
排查
tail -f /var/log/nginx/access.log
看 request_time 和 upstream_response_time
解决
top
htop
iotop
free -h
常见问题
解决
ulimit -n
解决
/etc/security/limits.conf
* soft nofile 65535
* hard nofile 65535
优化
listen 443 ssl http2;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
解决
gzip on;
gzip_types text/css application/javascript;
先看 access.log
request_time 大 → 后端慢
upstream_time 大 → 后端慢
request_time 小但感觉慢 → 网络 / 前端
再看系统资源
top
df -h
再测直连后端
curl http://127.0.0.1:端口
如果你愿意,可以贴出:
我可以直接帮你精准定位是哪一类问题。