php读取不到https的域名
因测试环境php遇到无法正常读取到https的域名,但是域名配置了ssl证书,故做如下排查。
php测试代码如下
$config['base_url'] = '';
#开启调试模式
#echo "<pre>";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还是https
define('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的内容已经恢复正常。
php读取不到https的域名的更多相关文章
- 网站是HTTP?10分钟变成HTTPS!域名免费添加配置SSL证书,变成https//环境
对于小程序request请求需要https域名.navigator.geolocation定位也需要在https环境下才可以生效等问题: 前端开发越来越需要https环境来来测试一下API接口和各类问 ...
- 新开源HTML5单文件网页版ACME客户端,可在线申请Let's Encrypt、ZeroSSL免费HTTPS多域名通配符泛域名SSL/TLS证书(RSA/ECC/ECDSA)
目录 开源项目的起源 项目地址 使用方法 第一步:选择Let's Encrypt.ZeroSSL或其他证书颁发机构 第二步:证书配置,填写域名 第三步:完成域名所有权的验证 第四步:下载保存证书PEM ...
- PHP使用file_get_contents或curl请求https的域名内容为空或Http 505错误的问题排查方法
前段日子,突然接到用户的反馈,说系统中原来的QQ登录.微博登录通通都不能用,跟踪代码进去后发现,是在 file_get_contents这个函数请求QQ登录的地方报错,在用该函数file_get_co ...
- IIS 绑定 HTTPS 域名
HTTPS为SSL安全通道,虽然并不清楚具体有什么用,但至少网站看上去比HTTP上档次,访问速度也没什么影响,所以有条件的话,还是做下,可以做噱头忽悠人. WIN2008系统 因为端口443冲突,只能 ...
- 域名配置https
阿里可以一年的免费申请https证书 (1)域名->管理->免费开启SSL证书 (2)申请完.等待审核后就可以下载证书压缩包,包括key和pem两个文件 (3)在服务器的nginx目录下创 ...
- 如何创建一个https的站点(超简单) 以及 IIS7.5绑定Https域名
1.申请免费1年的ssl证书(传送门:https://common-buy.aliyun.com/?spm=5176.2020520163.cas.29.N0xOPM&commodityCod ...
- 超详细网站博客域名和二级域名、子域名升级HTTPS免费申请SSL证书配置nginx指南
随着互联网的飞速发展,我们的工作生活已经离不开互联网,HTTP虽然使用极为广泛, 但是存在不小的安全缺陷, 主要是其数据的明文传送和消息完整性检测的缺乏, 而这两点恰好是网络支付,网络交易等网站应用中 ...
- linux tomcat【9.0.12】 使用 ssl证书 配置 https 的具体操作 【使用 域名 】
1.前言 根据上一个随笔,已经可以正式在 阿里云服务器发布 工程了 ,但是用的协议默认是 http ,端口80 但是 http不安全 ,容易被拦截抓包 ,于是出来了个 https tomcat发布 对 ...
- 微服务探索之路04篇k8s增加子节点,metrics资源监控,ingress-nginx域名配置及https配置
1 k8s增加子节点 1.1 子节点服务器安装docker,使用脚本自动安装 curl -fsSL https://get.docker.com | bash -s docker --mirror A ...
随机推荐
- PAT甲级——1105 Spiral Matrix (螺旋矩阵)
此文同步发布在CSDN:https://blog.csdn.net/weixin_44385565/article/details/90484058 1105 Spiral Matrix (25 分) ...
- HTTP2 Sampler for JMeter
今天开发大大说能不能帮忙压一下HTTP2的链接,便去查了一下相关的东西. HTTP 2.0 的出现,相比于 HTTP 1.x ,大幅度的提升了 web 性能.在与 HTTP/1.1 完全语义兼容的基础 ...
- [Java]HashMap实现与哈希冲突,与HashTable的区别
对于 Map ,最直观就是理解就是键值对,映射,key-value 形式.一个映射不能包含重复的键,一个键只能有一个值.平常我们使用的时候,最常用的无非就是 HashMap. HashMap 实现了 ...
- Codeforces #564div2 C(模拟)
要点 没想到的一点是,对于堆里的某牌,最好情况是它出来时后边都准备就绪了,答案是\(p[i] + (n - i + 1)\),所有的这个取最大的即可 一发结束的情况先特判一下 const int ma ...
- CodeForces - 1003-B-Binary String Constructing (规律+模拟)
You are given three integers aa, bb and xx. Your task is to construct a binary string ssof length n= ...
- Django -- 权限初识
待 需求分析-场景 假设需要为公司设计一个人员管理系统,并为各级领导及全体员工分配系统登录账号.有如下几个要求: 1.权限等级不同 公司领导登录后可查看所有员工的信息,部门领导登陆后之可查看本部门员工 ...
- 解决git commit报错问题
参考: https://stackoverflow.com/questions/3239274/git-commit-fails-due-to-insufficient-permissions 问题 ...
- beanshell解析json(从简单到复杂)
使用beanshell 解析单层Json: Json 数据如下: { "status":200, "code": 0, "message": ...
- Core 事件总
NET Core 事件总线,分布式事务解决方案:CAP 背景 相信前面几篇关于微服务的文章也介绍了那么多了,在构建微服务的过程中确实需要这么一个东西,即便不是在构建微服务,那么在构建分布式应用的过程中 ...
- ExpandoObject的使用
IDictionary<string, object> obj = new System.Dynamic.ExpandoObject(); obj.Add(); dynamic obj2 ...