今天分享一個我踩到的“低級但致命”的性能坑:
Nginx 代理后接口響應從毫秒級變成 5 秒以上,而直接訪問后端卻很快!
查文檔 各種調優參數都試了個遍,結果真相讓我哭笑不得——竟然是因為 Nginx 的 server_name
配了 IP,但沒配 Hosts 解析!
不信?一起來看完整排查過程??
?? 問題現象
- 部署方式:Nginx 反向代理,后端服務監聽
127.0.0.1:8088
:通過 Nginx 訪問接口,平均響應時間 5~6 秒!:直接訪問 http://127.0.0.1:8088/api/user
,響應時間 < 50ms!
后端沒問題,網絡通,服務正常,那慢在哪?
排查思路:
第一步:排除后端
curl -w "TCP: %{time_connect}s, 耗時: %{time_total}s\n" \
-o /dev/null -s \
http:
第二步:檢查 Nginx 配置(常規操作)
網上常見的“優化建議”我都試了:全都無效!??
| | |
---|
proxy_buffering off | |
|
proxy_http_version 1.1 | |
|
keepalive_timeout | |
|
resolver | |
|
| |
|
第三步:抓包分析
F12開發模式查看請求時間線:

推測問題出在nginx響應階段, Nginx 接收到請求后,并沒有立即轉發給后端只能這么推測, 因為已經排除后端了只能是nginx的問題
用 tcpdump
抓包:
tcpdump -i any -nn port 80
tcpdump -i any -nn port 8088
發現:Nginx 接收請求后,約 5 秒127.0.0.1:8088 才接受到請求猜測會不會是ip地址反向解析造成的,抱著試試看的心態搞一下試試
server_name
是 IP,莫非會觸發反向解析?
由于我的服務器nginx server_name:配置的是IP地址, 了解到 nginx中也會走一遍host做反向解析, 推斷出是反向解析導致的
?
給本機 IP 加 Hosts 解析
編輯 /etc/hosts
:
# 添加本機 IP 映射
192.168.1.100 localhost test-server
?? 替換 192.168.1.100
為你的服務器實際 IP。
然后重啟 Nginx 或重載配置:
驗證
再次訪問接口:效果杠杠滴
? 問題解決!
? 最佳實踐建議
生產環境建議使用域名
若用 IP,務必配 Hosts:
閱讀原文:原文鏈接
該文章在 2025/8/15 12:11:41 編輯過