nginx: サブフォルダを SSL 暗号化から除外する

nginx: サブフォルダを SSL 暗号化から除外する

私は自分のサーバーを nginx サーバーに次のように設定しました:

server {
   listen 443;
   ssl on;
   ssl_certificate /etc/ssl/certs/example.com.crt;
   ssl_certificate_key     /etc/ssl/private/example.com.key;
   server_name example.com;
   ... other things down here..
}

ディレクトリを SSL から除外するにはどうすればよいでしょうか? たとえば、/static/tour の下に Web アプリケーションを説明するツアーがありますが、これを暗号化する必要はありません。

OS: Ubuntu 10.04

答え1

同じドキュメント ルートに向けられたポート 80 でリッスンする別のサーバー構成を設定するか (また、アクセスする URL に応じてアプリが SSL または非 SSL のいずれかを強制していることを確認し、ユーザーが HTTPS から「S」を削除できないようにします)、次のような構成を使用することをお勧めします。http://ariejan.net/2011/10/22/ssl と non-ssl を自動的に切り替える

答え2

これは不可能です。SSL リクエストは暗号化されているため、サーバーはリクエストを復号化するまで URI がどのようになっているかさえわかりません。非 SSL プロトコルを使用して特定のサブディレクトリへのリクエストを送信するようにクライアントに指示する方法はありません。

Demelziraptor が言ったように、ポート 443 で SSL を使用する vhost と、ポート 80 で SSL を使用しない vhost の 2 つを設定できます。

SSL vhost 上のすべてのリクエストが非 SSL vhost 上の同じページにリダイレクトされるように、またその逆に非 SSL vhost 上のすべてのリクエストが SSL vhost にリダイレクトされるように、書き換えルールを簡単に設定/static/tourできます。

関連情報