由于某种原因,我被要求将 URL 重写从 HTTPS 到 HTTP。
背景:我正在使用 Nginx 作为反向代理,并且需要在 443 块中包含位置块,而应用程序出现混合资源错误并且无法在 HTTPS 上运行(开发人员这么说)。
我想要得到什么:我希望 Nginx 位置块位于 44 服务器块中,但所有流量都通过 HTTP(80)完成。
有人知道怎么做吗?我在考虑重写 URL。
是的,我知道将其放在端口 80 服务器块中比放在 443 中更有意义。老年人有时会有奇怪的想法。
位置区块
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/
,然后修复混合内容问题。
http://nginx.org/en/docs/http/ngx_http_sub_module.html:
location / {
sub_filter 'http://$host/' '"https://$host/';
sub_filter_once on;
}