在我的环境中,我使用 perlbal 将请求重定向到 nginx。如果verify_backend开启。perbal 将向 nginx 发送“OPTIONS *”请求,但 nginx 将其响应为错误请求。
根据RFC2616:
如果 Request-URI 是星号 (" "),则 OPTIONS 请求通常适用于 ?server 而不是特定资源。由于服务器的通信选项通常取决于资源,因此“ ”请求仅用作“ping”或“no-op”类型的方法;除了允许客户端测试服务器的功能之外,它什么也不做。例如,这可用于测试代理的 HTTP/1.1 合规性(或不合规性)。
我认为 perlbal 正在尝试发送这种请求,但默认情况下 nginx 无法处理。
当我尝试发送请求“OPTIONS * HTTP/1.0”时,总是收到“HTTP 400 bad request”:
127.0.0.1 - - [18/Feb/2013:03:55:47 +0000]“选项 * HTTP/1.0”400 172“-”“-”“-”
但它适用于没有星号请求的“OPTIONS / HTTP/1.0”选项:
127.0.0.1 - - [18/Feb/2013:04:03:56 +0000]“选项/HTTP/1.0”200 0“-”“-”“-”
如何配置 nginx 让它响应 http return 200 而不是 HTTP return 400 ?