haproxy层做了ssl卸载么?
这种情况很有可能是请求到达php层的时候已经不再具备https特征,以至于系统无法正常识别。
Discuz默认是会对进来的请求的属性进行猜测的:
- private function _is_https() {
- // PHP 标准服务器变量
- if(isset($_SERVER['HTTPS']) && strtolower($_SERVER['HTTPS']) != 'off') {
- return true;
- }
- // X-Forwarded-Proto 事实标准头部, 用于反代透传 HTTPS 状态
- if(isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && strtolower($_SERVER['HTTP_X_FORWARDED_PROTO']) == 'https') {
- return true;
- }
- // 阿里云全站加速私有 HTTPS 状态头部
- // Git 意见反馈 https://gitee.com/Discuz/DiscuzX/issues/I3W5GP
- if(isset($_SERVER['HTTP_X_CLIENT_SCHEME']) && strtolower($_SERVER['HTTP_X_CLIENT_SCHEME']) == 'https') {
- return true;
- }
- // 西部数码建站助手私有 HTTPS 状态头部
- // 官网意见反馈 https://discuz.dismall.com/thread-3849819-1-1.html
- if(isset($_SERVER['HTTP_FROM_HTTPS']) && strtolower($_SERVER['HTTP_FROM_HTTPS']) != 'off') {
- return true;
- }
- // 服务器端口号兜底判断
- if(isset($_SERVER['SERVER_PORT']) && $_SERVER['SERVER_PORT'] == 443) {
- return true;
- }
- return false;
- }
复制代码
但前提是传入的内容至少要携带以上判断条件中的其中一项属性,系统才能识别。
你可以尝试在php层写一个
把php层实际接收到的参数都打出来,看看你的配置实际是什么情况。