私の環境では、perlbal を使用してリクエストを nginx にリダイレクトしています。verify_backendがオンの場合。perbal は "OPTIONS *" リクエストを nginx に送信しますが、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 "-" "-" "-"
HTTP return 400 ではなく http return 200 で応答するように nginx を構成するにはどうすればよいですか?