リバースプロキシツールとしてnginxを設定しました。私は対処できなかった問題を見つけました。以下は、.confファイルで設定したルールです。特定のhttpsリンクのみをリダイレクトするNginxルール
server {
listen 80;
server_name rp.mydomain.com;
return 301 https://$host/myapp1/;
location/{
proxy_pass <local ip address>;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-Proto https;
proxy_redirect http://$host https://$host;
proxy_set_header Host $host;
}
}
server {
listen 443 ssl;
server_name rp.mydomain.com;
location/{
proxy_pass <local ip address>;
proxy_redirect http:// https://;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header Host $host;
proxy_ssl_session_reuse on;
}
}
私のアプリケーションは/ myapp1 /にあります。私が/ myapp1 /をproxy_pass [私が試した]に書いていないのは、ページにログインしようとすると、リダイレクトが正しく動作しないためです。エラーページが見つかりません。
しかし、このルールの後に80ブロックを聞くと、301 https://$host/myapp1/;
が返ってきますが、それは魅力的ですが、httpページを開いた場合に限ります。
リンクを開くと、rp.mydomain.com
と表示されます。リダイレクトは完全に機能しており、アプリケーションも正常に動作します。 httpリクエストはhttpsにリダイレクトされ、私のアプリからログインできます。
https://rp.mydomain.com
を通過すると、のルールがlisten 443
になっているため、空白のページが<local ip address>
になります。
私の要件は、ページの特定の要求は、https://rp.mydomain.com
であり、生成されたときであり、そのhttps://rp.mydomain.com/myapp1/
又はhttps://rp.mydomain.com/myapp1/profile
[など他の要求、(ユーザがhttp://rp.mydomain.com
介してページにアクセスしたとき、それがない場合のように)https://rp.mydomain.com/myapp1/
にリダイレクトその他]は影響を受けません。
1つの特定のページhttps://rp.mydomain.com
が自動的にリダイレクトされます。
これは可能ですか?この問題で私を助けてください。
ありがとうございます。
ありがとうございます。 "location = /"ブロックは完全に機能しました。 – Shahzaib