php https server_使用https,$_SERVER['HTTPS']却不等于on?
目前有兩臺服務器,都是http和https協議共存。
但是部分程序遇到一些問題,因為PHP中有根據$_SERVER['HTTPS']來設置環境常量。
一臺服務器可以拿到值為on,另外一臺卻是NULL。
一步步排查后才知道,這是個 fastcgi 配置的問題!
解決方法的辦法就是Nginx配置加上:
fastcgi_param HTTPS $https if_not_empty;
完整配置如下:
location ~ .*\.(php|php5)?$
{
try_files $uri =404;
fastcgi_pass unix:/tmp/php-cgi.sock;
fastcgi_param HTTPS $https if_not_empty;
fastcgi_index index.php;
include fastcgi_params;
}
很多人認為使用
fastcgi_param HTTPS on;
這樣是沒錯啦,不過強迫使用這個參數,不太有效哦!
最好的答案就(參考下面 nginx 官方的鏈接)
fastcgi_param HTTPS $https if_not_empty;
有 https 協議時才自動使用 https on,否則忽略這個參數。
$https:如果鏈接是 SSL 就返回 ON,否則返回空字符串。
if_not_empty:當參數有值時才傳遞到服務器
注意:這個?if_not_empty額外參數只適合Nginx 1.1.11之后的版本
參考地址:
總結
以上是生活随笔為你收集整理的php https server_使用https,$_SERVER['HTTPS']却不等于on?的全部內容,希望文章能夠幫你解決所遇到的問題。

- 上一篇: java s3 与ceph的关系_Cep
- 下一篇: php实现 三角形_PHP使用for循