8
在我的环境中,我使用perlbal将请求重定向到nginx。如果verify_backend处于打开状态。 perbal会向nginx发送一个“OPTIONS *”请求,但是nginx将它作为一个不好的请求来回应。如何在nginx中处理“OPTIONS *”请求?
根据RFC2616:
如果Request-URI是一个星号(“”),OPTIONS请求旨在适用于服务器一般,而不是特定的资源?由于服务器的通信选项通常取决于资源,因此“”请求仅作为“ping”或“no-op”类型的方法有用;除了允许客户端测试服务器的功能之外,它什么都不做。例如,这可用于测试代理是否符合HTTP/1.1(或缺乏)。
我想perlbal试图发送这种请求,但nginx默认情况下无法处理这个。
当我试图发送一个请求 “OPTIONS * HTTP/1.0”,我总是得到 “HTTP 400错误的请求”:
127.0.0.1 - - [18 /二月/ 2013:03:55 :47 0000] “OPTIONS * HTTP/1.0” 400 172 “ - ” “ - ”, “ - ”
但它工作于 “OPTIONS/HTTP/1.0” 选项,而不星号请求:
127.0.0.1 - - [18/Feb/2013:04:03:56 +0000]“OPTIONS/HTTP/1.0”200 0“ - ”“ - ”“ - ”
如何配置nginx让它响应HTTP返回200而不是HTTP返回400?
我不认为这是一个解决方案但你有没有尝试使用带有'Host:'头部的HTTP/1.1? ala ...'选项* HTTP/1.1 \ r \ n主机:devserver \ r \ n \ r \ n'。根据[RFC2616第9节](http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html):HTTP/1.1的一组常用方法定义如下...' – Basic 2013-02-18 12:55:01
嗨,谢谢为您的想法,但我仍然有'400坏请求',甚至没有机会输入标头 我试图通过远程登录发出带主机标题的选项请求: ' telnet 10.1.128.97 5274 尝试10.1.128.97 .. 。 连接到10.1.128.97。 转义字符是'^]'。 OPTIONS * HTTP/1.1
400错误的请求