1

ログイン ページを https にリダイレクトして、ユーザーが暗号化されていないネットワーク経由で資格情報を誤って入力しないようにしたいと考えています。以下のようなことをするにはどうすればよいですか?

# nginx.conf
server {
  server_name example.org;
  rewrite http://*.example.org/login https://example.org/login;
}

これはhttp://example.org/loginでは機能しますが、 http://www.example.org/loginでは機能しません

ルール出力の書き換え

rewrite http://.*\.?example.org/login https://example.org/login;

デバッグ出力を書き直します。

*2 "http://.*\.?example.org/login" does not match "/login", client: XXX.XXX.XX.72, server: example.org, request: "GET /user HTTP/1.1", host: "example.org"
4

1 に答える 1

4

元の回答は非常に簡単だったので削除しました。これが機能するには、ロケーション ブロックと if が必要で、キャッチオール サーバー ドメインも必要です。構造は次のとおりです。

 server {
   server_name example.org;
   server_name *.example.org;
   location /login {
       if ( $scheme = http ) {
          rewrite ^ https://example.org/login last;
       }
   }
 }

nginx で ifs を使用するのは嫌ですが、今回は必要です。

于 2013-04-06T21:56:39.517 に答える