Nginx 重写 URL,因为 https 不起作用

Nginx 重写 URL,因为 https 不起作用

由于某种原因,我被要求将 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;
}

相关内容