現在、http://www.example.orgとhttps://www.example.orgの両方にサービスを提供しているELBがあります。
http://www.example.orgを指すリクエストがhttps://www.example.orgにリダイレクトされるように設定したいと思います。
ELBはhttps要求をhttp要求として送信するため、次を使用します。
server {
listen 80;
server_name www.example.org;
rewrite ^ https://$server_name$request_uri? permanent;
}
https://www.example.orgへのリクエストはnginxのポート80 に対して行われるため、機能しません。
私はそれを次のように書き換えることができることを知っています
server {
listen 80;
server_name www.example.org;
if ($http_x_forwarded_proto != "https") {
rewrite ^(.*)$ https://$server_name$1 permanent;
}
}
しかし、私が読んだif
すべてのことは、nginx構成内のすべてのコストで回避されるべきであると述べており、これはすべてのリクエストに当てはまります。また、ヘルスチェック用に特別な個別の構成を設定する必要があることを意味します(ここで説明するように、「…ELBがHTTPSエンドポイントとして機能し、HTTPトラフィックのみをサーバーに送信するELBの背後にいる場合、 ELBが必要とするヘルスチェックに対してHTTP 200 OK応答で応答する機能を破壊します」)。
ログインをnginx設定ではなくWebアプリケーションのコードに入れることを検討しています(そしてこの質問の目的のためにDjangoベースのアプリケーションであると仮定しましょう)が、それがオーバーヘッドよりも大きいかどうかはわかりませんif
で構成。