PCIに準拠するために、私のアプリケーションはリバースプロキシサーバーとバックエンドアプリサーバーの間で安全な/暗号化された接続を使用するように強制されますが、リバースプロキシに入る接続はポート80にあります。つまり、リバースプロキシはhttp-toとして機能する必要があります。 -httpsコンバータ。
簡単な図:
IIS7 <---ポート443 --- nginx <----ポート80 ----インターネット
私はこれのためにイカよりもnginxを使用して評価しています、そしてこれは私がこれまでに私のnginx.confに持っているものです:
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
upstream backend {
server mybackendserver:443;
}
server {
server_name www.mysite.com
listen 80;
ssl on;
ssl_certificate /etc/nginx/server.crt;
ssl_certificate_key /etc/nginx/server.key;
ssl_verify_client off;
location = / {
proxy_pass https://backend;
proxy_set_header Host $http_Host;
proxy_set_header X_FORWARDED_PROTO https;
}
}
}
上記のように、www.mysite.comにアクセスすると、「400 BadRequestプレーンHTTPリクエストがHTTPSポートに送信されました」と表示されます。
どこがいけないの?これも実行可能ですか?この目的のためにnginxはイカよりも優れていますか?
よろしくお願いします、G
proxy_pass
はHTTPSにプロキシできますが、これは問題ではありません。
構成にエラーがあります。行を削除します
ssl on;
ssl_certificate /etc/nginx/server.crt;
ssl_certificate_key /etc/nginx/server.key;
ssl_verify_client off;
これらはNginx側でSSLサーバーをオンにしています。つまり、Nginxはポート80でSSL接続を期待しています。ブラウザは通常のHTTPをポート80に送信するため、Nginxは「400 Bad RequestプレーンHTTPリクエストがHTTPSポートに送信されました」と文句を言います。