使用https,$_SERVER['HTTPS']却不等于on?
目前有两台服务器,都是http和https协议共存。
但是部分程序遇到一些问题,因为PHP中有根据$_SERVER['HTTPS']来设置环境常量。
一台服务器可以拿到值为on,另外一台却是NULL。
一步步排查后才知道,这是个fastcgi配置的问题!
解决方法的办法就是Nginx配置加上:
fastcgi_paramHTTPS$httpsif_not_empty;
完整配置如下:
location~.*\.(php|php5)?$
{
try_files$uri=404;
fastcgi_passunix:/tmp/php-cgi.sock;
fastcgi_paramHTTPS$httpsif_not_empty;
fastcgi_indexindex.php;
includefastcgi_params;
}
很多人认为使用
fastcgi_paramHTTPSon;
这样是没错啦,不过强迫使用这个参数,不太有效哦!
最好的答案就(参考下面nginx官方的链接)
fastcgi_paramHTTPS$httpsif_not_empty;
有https协议时才自动使用httpson,否则忽略这个参数。
- $https:如果链接是SSL就返回ON,否则返回空字符串。
- if_not_empty:当参数有值时才传递到服务器
注意:这个 if_not_empty 额外参数只适合Nginx1.1.11之后的版本
参考地址:
- Nginx:普通的HTTP请求被发送到HTTPS端口
- FastCGIapplicationbehindNGINXisunabletodetectthatHTTPSsecureconnectionisused
热门推荐
10 感谢韩语老师祝福语简短
11 升职文案高级祝福语简短
12 花童结婚祝福语大全简短
13 向国庆送祝福语简短
14 什么寄语简短祝福语女生
15 客户回礼祝福语大全简短
16 女孩生日祝福语简短创意
17 家长回复节日祝福语简短
18 给外婆敬酒祝福语简短