2008-10-22 59 views
15

我们使用HAProxy的是,此刻的负载平衡器要求,并定期发出请求到下游箱,以确保他们使用OPTIONS请求还活着:处理选项在nginx的

选项/ index.html HTTP/1.0

我正在将nginx设置为缓存(使用ncache)作为反向代理。出于某种原因,当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

此模块是否可用? – 2010-04-16 14:29:54

回答

2

在httpchk选项,你可以像这样指定的HTTP方法:

httpchk GET http://example.com/check.php 

您还可以使用POST,或者一个普通的URI一样/。我让它检查PHP,因为PHP在Nginx外部运行。

20

我可能已经很晚了,但我遇到了同样的问题,并找到了两个解决方案。

首先被欺骗Nginx的一个405点的状态实际上是一个200 OK,然后将其proxy_pass您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写了这个,你可以找到更多的细节。