最近通过Nginx反向代理一个网站,环境为Flask+uwsgi+Nginx反向代理,当部署证书并设置强制跳转https以后,在浏览器输入:blog.amd5.cn访问出现了“400 Bad Request The plain HTTP request was sent to HTTPS port”错误,如下图:
一开始怀疑自己的配置有问题,反复确认和对比以后,排除配置问题。
于是网上搜索了相关报错,找到了解决方案,出现这种报错的主要原因是:
因为HTTP请求被发送到HTTPS端口,这种报错多出现在Nginx既处理HTTP请求又处理HTTPS请求的情况。
正常80端口访问应该是:http://blog.amd5.cn:80/login
正常开启HTTPS以后443端口访问应该是:https://blog.amd5.cn:443/login
但是此时却变成了: http://blog.amd5.cn:443/login,即HTTP请求被发送到HTTPS端口。
如果我直接在浏览器输入:https://blog.amd5.cn,却能正常跳转到https://blog.amd5.cn/login
直接输入http://blog.amd5.cn/login,也能正常跳转到https://blog.amd5.cn/login
为什么会有这样的问题呢,经过排查原来是多次重定向导致的,主要是因为在使用Flask-Login验证登录的时候,如果未登录,会重定向到登录页面。
通过浏览器开发者工具,可以看到,当我浏览器输入blog.amd5.cn,第一次重定向为http->https:
1 2 3 4 5 | Request URL: https: //blog .amd5.cn/ Request Method: GET Status Code: 302 FOUND Remote Address: 127.0.0.1:443 Referrer Policy: strict-origin-when-cross-origin |
然后第二次重定向为:/->/login:
1 2 3 4 5 | Request URL: http: //blog .amd5.cn:443 /login Request Method: GET Status Code: 400 Bad Request
本文链接:https://www.8a.hk/news/content/3917.html
复制本文链接
链接已复制
Copyright © 2013-2024 8a.hk All Rights Reserved. 八艾云 版权所有 中山市八艾云计算有限公司 粤ICP备14095776号 粤公网安备 44200002445359号 增值电信业务经营许可证编号:B1-20222012 代理域名注册服务机构:西部数码 |