http – 在nginx中处理OPTIONS请求

我们目前正在使用HAProxy作为负载平衡器,并且定期向下游的盒子发出请求,以使用OPTIONS请求确保它们仍然存在:

OPTIONS /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中设置响应?

最佳答案
我可能迟到了,但我也遇到了同样的问题,并找到了两个解决方案.

首先是欺骗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写了这个,你可以在这里找到更多的细节.

转载注明原文:http – 在nginx中处理OPTIONS请求 - 代码日志