https が機能しないため、Nginx は URL を書き換えます

https が機能しないため、Nginx は URL を書き換えます

何らかの理由で、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;
}

関連情報