
何らかの理由で、URL を HTTPS から HTTP に書き換えるタスクが私に課せられています。
背景: Nginx をリバース プロキシとして使用しており、アプリケーションが混合リソース エラーを返し、HTTPS では動作しない (開発者の言うとおり) ため、443 ブロックにロケーション ブロックが必要です。
実現したいこと: Nginx のロケーション ブロックが 44 サーバー ブロック内にあるが、すべてのトラフィックが HTTP (80) 経由で実行されるようにします。
誰かこれをどうやって行うか知っていますか? URL の書き換えを考えていました。
はい、443 ではなくポート 80 のサーバー ブロックに配置する方が合理的であることはわかっています。高齢者は時々奇妙な考えを持つことがあります。
場所ブロック
location /solution_tools/ {
auth_basic "Please enter your credentials";
auth_basic_user_file solutions_utils.pass;
proxy_pass http://solution_tools/;
}
答え1
「アプリケーションは混合リソース エラーを出し、HTTPS では動作しません (開発者によると)」
そうなると、開発者はアプリを修正する必要があります。なぜなら、今日では、HTTPS をサポートしない Web アプリは完全に非推奨となっているからです。
アプリを修正できない場合は、プレーン HTTP にリダイレクトするのではなく、その逆を行い、すでにリバース プロキシを実行しているという事実を最大限に活用して、プレーン http 上の絶対 URL を参照する「問題のある」HTML コードを http://www.exameple.com/
https に書き換えhttpS://www.exameple.com/
、その方法で混合コンテンツの問題を修正します。
nginx.org/ja/docs/http/ngx_http_sub_module.html を参照してください。:
location / {
sub_filter 'http://$host/' '"https://$host/';
sub_filter_once on;
}