我们目前正在使用HAProxy作为负载均衡器,它会定期向下游框发出请求,以确保它们使用OPTIONS请求存活:
OPTIONS /index.html HTTP / 1.0
我正在使用缓存(使用ncache)将nginx设置为反向代理。出于某种原因,当OPTIONS请求进入时,nginx返回405:
192.168.1.10 - - [22 / Oct / 2008:16:36:21 -0700]“OPTIONS /index.html HTTP / 1.0”405 325“ - ”“ - ”192.168.1.10
直接点击下游网络服务器时,我得到了适当的200响应。我的问题是:如何让nginx将响应传递给HAProxy,或者,如何在nginx.conf中设置响应?
答案 0 :(得分:32)
我可能迟到了,但我遇到了同样的问题,并找到了两个解决方案。
首先是欺骗Nginx,405状态实际上是200 OK,然后将它代理传递给你的HAProxy,如下所示:
error_page 405 =200 @405;
location @405 {
root /;
proxy_pass http://yourproxy:8080;
}
第二个解决方案就是捕获OPTIONS请求并为这些请求构建响应:
location / {
if ($request_method = OPTIONS ) {
add_header Content-Length 0;
add_header Content-Type text/plain;
return 200;
}
}
选择哪一种更适合你。
我在blog post写了这个,你可以在那里找到更多细节。
答案 1 :(得分:1)
在httpchk选项中,您可以像这样指定HTTP方法:
httpchk GET http://example.com/check.php
你也可以使用POST,或者像/那样的普通URI。我检查PHP,因为PHP在Nginx外部运行。