Nginx+php-fpm SSL不輸出$_SERVER['HTTPS']的解決辦法
阿新 • • 發佈:2019-01-29
最近在API介面上使用了SSL,訪問簽名用到了Url,後面發現伺服器端與客戶端簽名一直對不上,PHP框架使用了Yii2,追朔原始碼,它是這麼判斷是否https連線的:
OK,print_r($_SERVER),發現沒有HTTPS,也沒有HTTP_X_FORWARDED_PROTO。度娘一番,我使用的是nginx+php-fpm,在nginx配置上要加下以下這行:public function getIsSecureConnection() { return isset($_SERVER['HTTPS']) && (strcasecmp($_SERVER['HTTPS'], 'on') === 0 || $_SERVER['HTTPS'] == 1) || isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && strcasecmp($_SERVER['HTTP_X_FORWARDED_PROTO'], 'https') === 0; }
fastcgi_pass 127.0.0.1:9001;
fastcgi_index index.php;
include fcgi.conf;
<span style="color:#ff0000;">fastcgi_param HTTPS on;</span>
問題解決,列印$_SERVER['HTTPS']=on了!