开发者社区> 问答> 正文

nginx做负载均衡的时候,怎么让请求不转发到一台正在启动的tomcat服务上?? 400 报错

nginx做负载均衡的时候,怎么让请求不转发到一台正在启动的tomcat服务上?? 400 报错

有两台服务器做负载均衡,nginx设置的权重一样,有一台挂掉的时候,请求转发到另外一台去,但是启动这一台挂掉的tomcat时候,请求还是会转发到这台正在请求的服务器上,页面就会一直卡住知道tomcat启动完成,想问问有没有办法让tomcat启动完成后才接收nginx的转发

展开
收起
爱吃鱼的程序员 2020-06-02 13:51:16 540 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    请使用nginx_upstream_check_module这个模块,它会帮你主动检查后端的tomcat是否在正常提供服务,如果不能提供服务那就不会发送请求到故障的tomcat上。

    ######这个靠谱些######增加一层api gateway######

    我也有这个疑问,等待老鸟解答。

    ######

    这个我觉得是tomcat的问题,你可以试下不经过nginx直接访问tomcat,在启动的时候,访问也是一致在loading中,所以我的建议是你换另外一种web容器

    ######

    proxy_connect_timeout   

    ######

    我的做法是设置proxy_connect_timeout 1;

    ######回复 @newsomeone : connect是连接的意思,如果有连接就等着,没有换下一个,我是这么理解的######哪几个超时时间我都设置成1秒了,问下如果tomcat正常的,但是请求超过1秒了 这个时候是不是都不能成功请求这个了######

    我把这几个超时时间都设置成1秒了 暂时看可以满足,原理还不太懂,比如一个请求数据量比较大,tomcat响应超过1秒了会怎么样         

    proxy_connect_timeout 1;
    #后端服务器连接的超时时间_发起握手等候响应超时时间 默认60
    proxy_send_timeout 1;
     #后端服务器处理请求的时间 默认60
     proxy_read_timeout 1;
     

    ######

    nginx + lua实现动态的调整upstream

    ######

    你可以先修改NGINX配置把重启的机器注释掉,reload,启动好了后在加上去,reload。

    ######你别说我也这样干过,但是有些麻烦~
    2020-06-02 13:51:30
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
双十一技术揭秘负载均衡性能优化演进之路 立即下载
CentOS Nginx PHP JAVA 多语言镜像使用手 立即下载
CentOS Nginx PHP JAVA多语言镜像使用手册 立即下载