Java自学者论坛

 找回密码
 立即注册

手机号码,快捷登录

恭喜Java自学者论坛(https://www.javazxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,会员资料板块,购买链接:点击进入购买VIP会员

JAVA高级面试进阶训练营视频教程

Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程Go语言视频零基础入门到精通Java架构师3期(课件+源码)
Java开发全终端实战租房项目视频教程SpringBoot2.X入门到高级使用教程大数据培训第六期全套视频教程深度学习(CNN RNN GAN)算法原理Java亿级流量电商系统视频教程
互联网架构师视频教程年薪50万Spark2.0从入门到精通年薪50万!人工智能学习路线教程年薪50万大数据入门到精通学习路线年薪50万机器学习入门到精通教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程MySQL入门到精通教程
查看: 705|回复: 0

nodejs 通过nginx后出现响应慢的解决方法

[复制链接]
  • TA的每日心情
    奋斗
    2024-6-6 10:50
  • 签到天数: 750 天

    [LV.10]以坛为家III

    2034

    主题

    2092

    帖子

    70万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    706216
    发表于 2021-4-15 08:22:49 | 显示全部楼层 |阅读模式

        最近用了nodejs搭建服务器,然后用了nginx做了反向代理,项目开发需求,没办法。但是发现了经过代理之后发现网页请求变慢了,而且是不能忍的一分钟以上。

        一开始,怀疑是在nodejs那边的问题,结果在nodejs那边进行了判断(通过写测试代码),但是发现是经过了一分多钟请求才到nodejs这边,那么只能先排除nodejs这方面的问题。

        那么要排除nginx的问题,我的环境是 windows7(x64) nginx(1.62)  nodejs(4.23),配置如下

    server {
        listen 80;
        server_name mysite.com;
        location / {
            proxy_set_header    X-Real-IP           $remote_addr;
            proxy_set_header    X-Forwarded-For     $proxy_add_x_forwarded_for;
            proxy_set_header    Host                $http_host;
            proxy_set_header    X-NginX-Proxy       true;
            proxy_set_header    Connection          "";
            proxy_http_version  1.1;
            proxy_pass          http://localhost:3333;
        }
    }

        这是一个比较普通的配置,找不出来问题,那么只能去找错误日志了,突然发现错误日志error.log里面有这么一段代码

    2015/12/25 16:30:43 [error] 7652#7008: *1 upstream timed out (10060: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond) while connecting to upstream, client: 127.0.0.1, server

        之前没怎么留意错误日志,罪过了啊,那么既然发现了这个错误,找方法就简单多了。

        像是nodejs那边没有给nginx及时响应,那么可以增加这几个配置来解决(单位为秒)

    proxy_connect_timeout 1; 
    proxy_send_timeout 30; 
    proxy_read_timeout 60;

     

        这三个设置的定义是:

        proxy_connect_timeout
        后端服务器连接的超时时间_发起握手等候响应超时时间

        proxy_read_timeout
        连接成功后_等候后端服务器响应时间_其实已经进入后端的排队之中等候处理(也可以说是后端服务器处理请求的时间)

        proxy_send_timeout
        后端服务器数据回传时间_就是在规定时间之内后端服务器必须传完所有的数据

        添加之后,就解决了,完整的是:

    server {
        listen 80;
        server_name mysite.com;
        location / {
            proxy_set_header    X-Real-IP           $remote_addr;
            proxy_set_header    X-Forwarded-For     $proxy_add_x_forwarded_for;
            proxy_set_header    Host                $http_host;
            proxy_set_header    X-NginX-Proxy       true;
            proxy_set_header    Connection          "";
            proxy_http_version  1.1;
            proxy_connect_timeout 1; 
            proxy_send_timeout 30; 
            proxy_read_timeout 60;
            proxy_pass          http://localhost:3333;
        }
    }



        



    哎...今天够累的,签到来了1...
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|小黑屋|Java自学者论坛 ( 声明:本站文章及资料整理自互联网,用于Java自学者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-6-18 09:58 , Processed in 0.065280 second(s), 30 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表