Nginx 上的反向代理非常慢

Nginx 上的反向代理非常慢

这是在运行 Ubuntu 16.04.3 LTS 的服务器上,为 Angular Web 应用程序提供服务。网站运行完全正常,但加载页面非常慢,有时需要几分钟。我尝试了各种解决方案,包括。这确实显著加快了网站速度,但也导致一些页面无法访问。任何帮助或提示都将不胜感激,谢谢!

server {
   listen 80 default_server;
   listen [::]:80 default_server;

   listen 443 ssl; 
   ssl_certificate /location/ 
   ssl_certificate_key /location/

    root /location/;

    index index.html index.htm index.nginx-debian.html;

    server_name site.net;

    add_header Strict-Transport-Security max-age=500;

location / {
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header Host $http_host;
            proxy_http_version 1.1;
            proxy_set_header Connection "upgrade";
            proxy_pass http://localhost:1337/;
            proxy_buffering off;
           }
}

答案1

性能良好的 Web 服务器通常是许多小优化的结果。但页面加载需要几分钟时间(!)看起来更像是配置错误,而不是缺少性能优化。

由于你没有明确指出页面加载速度较慢的部分……我会这样做:

  1. 检查客户端的网络连接是否缓慢:https://fast.com

    • 真的是服务器的问题吗?还是您与服务器的连接的问题?
  2. 检查页面加载时间https://www.webpagetest.org

    • TTFB 慢?-> 检查 DNS。检查 SSL 协商。检查服务器上的缓存。

    • 完成初始请求需要很长时间?-> 检查数据库查询是否缓慢。检查数据库表索引是否缺失。检查应用程序代码。

    • 检查初始重定向通常会使缓慢的站点变得更慢。-> 检查 nginx 配置和应用程序代码中尾随斜杠的一致使用。

  3. 检查 nginx vhost 配置。

    • 将 :80 和 :443 上的监听放在一个server块中似乎不行。您肯定希望将 :80 请求重定向到 :443,因此您应该将 :80 和 :443 拆分为两个“服务器”块。
    • 服务器没有监听 :443 上的 IPv6 似乎有问题。

    • 也许添加 http2 支持 443 listen 参数

  4. 检查 nginx 日志文件。

    • 也许可以使用高级日志功能并向 log_format 添加时间信息。请参阅这里

    • 如果不需要,请关闭生产中的日志记录。

  5. 检查 nginx.conf。

    • worker_processes 和 worker_connections 的值正常吗?

    • 速率限制已激活?

  6. 检查直接为应用程序提供服务而不是通过 proxy_pass 提供服务时的性能差异。

  7. 检查服务器上的缓存。

  8. 查看更多有关 nginx 性能调优的选项这里

  9. 检查 Ubuntu 日志(例如 syslog)中是否存在其他问题,例如硬盘故障、fail2ban 问题……

  10. 祝你好运!

相关内容