web-dev-qa-db-ja.com

nginxでのOPTIONSリクエストの処理

現在、HAProxyをロードバランサーとして使用しており、OPTIONSリクエストを使用してダウンストリームボックスが稼働していることを確認するために、定期的にダウンストリームボックスにリクエストを送信します。

オプション/index.htmlHTTP/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

ダウンストリームWebサーバーに直接アクセスすると、適切な200応答が返されます。私の質問は、nginxにその応答をHAProxyに渡すようにする方法、またはnginx.confで応答を設定するにはどうすればよいですか?

25
ctmiller

私はおそらく遅れていますが、同じ問題があり、2つの解決策を見つけました。

最初は、405ステータスが実際には200 OKであることをNginxにだましてから、次のようにプロキシ_パスしてHAProxyに渡します。

error_page 405 =200 @405;
location @405 {
    root /;
    proxy_pass http://yourproxy:8080;
}

2番目の解決策は、OPTIONS要求をキャッチし、それらの要求に対する応答を作成することです。

location / {
    if ($request_method = OPTIONS ) {
        add_header Content-Length 0;
        add_header Content-Type text/plain;
        return 200;
    }
}

どちらが自分に合っているかを選択するだけです。

私はこれを ブログ投稿 に書きました。ここで詳細を見つけることができます。

35
rogeriopvl

Httpchkオプションでは、次のようにHTTPメソッドを指定できます。

httpchk GET http://example.com/check.php

POST、または/のようなプレーンURIを使用することもできます。 PHPはNginxの外部で実行されるため、PHPをチェックしてもらいます。

1
Mark Rose