http - 在 nginx 中处理 OPTIONS 请求

标签 http nginx haproxy http-options-method

我们目前使用 HAProxy 作为负载均衡器,它会定期向下游盒子发出请求,以确保它们使用 OPTIONS 请求处于事件状态:

OPTIONS /index.html HTTP/1.0

我正在努力将 nginx 设置为带缓存的反向代理(使用 ncache)。出于某种原因,nginx 在 OPTIONS 请求进入时返回 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 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/227939/

相关文章:

linux - HAproxy 子目录

mysql - 在 Homestead 盒子上设置 phpmyadmin

jQuery 'get' 没有从 C++ FastCGI 应用程序(nginx 网络服务器)收到正确的答案

java - Android 的 HttpURLConnection 在 HEAD 请求上抛出 EOFException

javascript - 欺骗 JavaScript 兼容性

nginx 流模式重新连接到上游而不关闭下游连接

http - 如何在不将请求传递给 Web 服务器的情况下使用 HAProxy 发送响应

带有 haproxy 的 mysql 农场

android - 在 android 上通过 POST 发送二进制数据

java - Java 磁盘缓存 http 库 : Does it exist?