博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
php读取不到https的域名
阅读量:4914 次
发布时间:2019-06-11

本文共 2817 字,大约阅读时间需要 9 分钟。

因测试环境php遇到无法正常读取到https的域名,但是域名配置了ssl证书,故做如下排查。

php测试代码如下

$config['base_url'] = '';#开启调试模式#echo "
";print_r($_SERVER);die;$http_type = ((isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') || (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https')) ? 'https://':"http://";define('HTTP_TYPE', $http_type);//定义当前域名使用协议是http还是httpsdefine('URL', $http_type.$_SERVER['HTTP_HOST']);define('OLD_URL', $http_type.$_SERVER['HTTP_HOST']);//老版本专用

通过上述代码调试出来如下结果。

Array(    [USER] => nginx    [HOME] => /var/cache/nginx    [HTTP_COOKIE] => ___rl__test__cookies=1533966737026; OUTFOX_SEARCH_USER_ID_NCOO=909839729.8454164; PHPSESSID=borlvm751o6fj00qgk8fhcejv3; PKBET_ORG=Y    [HTTP_ACCEPT_LANGUAGE] => zh-CN,zh;q=0.9    [HTTP_ACCEPT_ENCODING] => gzip, deflate, br    [HTTP_ACCEPT] => text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8    [HTTP_USER_AGENT] => Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36    [HTTP_UPGRADE_INSECURE_REQUESTS] => 1    [HTTP_CACHE_CONTROL] => no-cache    [HTTP_PRAGMA] => no-cache    [HTTP_CONNECTION] => close    [HTTP_X_FORWARDED_FOR] => xxx.xx.xxx.xx    [HTTP_X_REAL_IP] => xxx.xx.xxx.xx    [HTTP_HOST] => xxxx.com    [REDIRECT_STATUS] => 200    [SERVER_NAME] => xxxx.com    [SERVER_PORT] => 80    [SERVER_ADDR] => 10.10.10.208    [REMOTE_PORT] => 51618    [REMOTE_ADDR] => 10.10.10.207    [SERVER_SOFTWARE] => nginx/1.14.0    [GATEWAY_INTERFACE] => CGI/1.1    [REQUEST_SCHEME] => http    [SERVER_PROTOCOL] => HTTP/1.0    [DOCUMENT_ROOT] => /data/www    [DOCUMENT_URI] => /index.php    [REQUEST_URI] => /    [CONTENT_LENGTH] =>     [CONTENT_TYPE] =>     [REQUEST_METHOD] => GET    [QUERY_STRING] =>     [PATH_INFO] =>     [SCRIPT_NAME] => /index.php    [SCRIPT_FILENAME] => /data/www/index.php    [FCGI_ROLE] => RESPONDER    [PHP_SELF] => /index.php    [REQUEST_TIME_FLOAT] => 1533971228.3193    [REQUEST_TIME] => 1533971228)

确实没有打印到https被开启的相关内容,检查nginx反向代理配置文件的ssl配置部分。

upstream xxxx.com {        server 10.10.10.208:80;}server{    listen 443;     server_name xxxx.com;    ssl                  on;    ssl_certificate      /etc/nginx/crt/xxxx.com/xxxx.com.crt;    ssl_certificate_key  /etc/nginx/crt/xxxx.com/xxxx.com.key;    ssl_session_timeout  5m;    location / {        proxy_pass         http://xxxx.com;        proxy_set_header   Host             $host;        proxy_set_header   X-Real-IP        $remote_addr;        proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;    }}

发现上述配置文件ssl证书正常,但是PHP获取不到X-Forwarded-Proto或者HTTPS的变量值,尝试在反向代理配置中加入以下配置。

proxy_set_header   X-Forwarded-Proto $scheme;

再次通过php调试打印出现https内容。

[HTTP_X_FORWARDED_PROTO] => https[HTTPS] => on

再次访问PHP的内容已经恢复正常。

转载于:https://www.cnblogs.com/will-space/p/9460937.html

你可能感兴趣的文章
犀牛Phinoceros 如何切换中文语言
查看>>
Win7如何解决精简版的迅雷7无法运行
查看>>
C#.NET常见问题(FAQ)-如何判断某个字符是否为汉字
查看>>
直接用postman测试api ,服务器端没提供跨域也可以访问。
查看>>
数据的类型以及内置方法
查看>>
继承之super关键字的使用
查看>>
XML - 报表数据的新大陆
查看>>
echart在X轴下方添加字
查看>>
Map集合的两种取出方式
查看>>
GridView,Repeater增加自动序号列
查看>>
SMO算法精解
查看>>
第k小元素学习记录
查看>>
avi文件格式详解【转】
查看>>
django
查看>>
Java学习从入门到精通
查看>>
查找目录下的所有文件中是否含有某个字符串 linux
查看>>
66. Plus One 数组加1
查看>>
范式原则
查看>>
2018年各大互联网前端面试题四(美团)
查看>>
一起学Python:字符串介绍
查看>>