Nginx   发布时间:2022-05-11  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Nginx:将https://重写为http://大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

我正在尝试让Nginx将传入的请求重写为我的服务器,前缀为https://到http://(这是因为此站点上使用的CMS强制URI而不是相对路径 – 基本上打破了整个站点通过使图像,脚本和样式表不可用).

我目前正在尝试改进前任制定的现有指令,但我发现自己受限于我对Nginx配置语法的了解.这是代码:

if ($ssl_protocol = "") {
    rewrite ^   https://$http_host$request_uri? peRMANent;
}

我当前评论了这段代码,以防止强制重写http://到https://,但我不能在不破坏网站的情况下撤销该过程.这是我到目前为止所尝试的内容:

if ($ssl_protocol = "https") {
    rewrite ^   http://$http_host$request_uri? peRMANent;
}

# also tried ($ssl_protocol != "")
if (!($ssl_protocol = "")) {
    rewrite ^   http://$http_host$request_uri? peRMANent;
}

第一个似乎没有效果.发送到客户端的HTML仍会生成未被重写的httpS请求.

第二个片段似乎也没有任何效果 – 如果我理解正确(尽管我仍然有些惊讶),Nginx不支持布尔否定.

这样做的最佳方式(或工作方式)是什么?

编辑:我已经尝试添加来自@ NathanC的答案的代码;但是,这种无条件重写会导致重定向循环.仍然感谢帮助.

最佳答案
更干净的方式是:

if ( $scheR_785_11845@e = "https" ) {
    return 301 http://example.com$request_uri

或者在那个和Nathans之间的某个地方回答,你的默认ssl服务器块只包含返回301(无论哪个ssl块,你都要仔细看看你的,看看它是如何实现和适应的)没有必要做正则表达式用于简单的重定向

返回 – http://nginx.org/en/docs/http/ngx_http_rewrite_module.html#return

编辑:我刚刚注意到有一个变量$https可以在if语句中使用.如果不是https,则返回“”:

if ( $https = "on" ) {
    ...

请记住,在测试更改时,您应该使用302临时重定向而不是301永久重定向,以便在您发现提前一小时修复它时保存拔毛,但更改未反映在您的浏览器中:)

大佬总结

以上是大佬教程为你收集整理的Nginx:将https://重写为http://全部内容,希望文章能够帮你解决Nginx:将https://重写为http://所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: