nginx做负载均衡的时候,怎么让请求不转发到一台正在启动的tomcat服务上?? 400 报错
有两台服务器做负载均衡,nginx设置的权重一样,有一台挂掉的时候,请求转发到另外一台去,但是启动这一台挂掉的tomcat时候,请求还是会转发到这台正在请求的服务器上,页面就会一直卡住知道tomcat启动完成,想问问有没有办法让tomcat启动完成后才接收nginx的转发
请使用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。
######你别说我也这样干过,但是有些麻烦~版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。