1. 程式人生 > >Nginx+php-fpm SSL不輸出$_SERVER['HTTPS']的解決辦法

Nginx+php-fpm SSL不輸出$_SERVER['HTTPS']的解決辦法

最近在API介面上使用了SSL,訪問簽名用到了Url,後面發現伺服器端與客戶端簽名一直對不上,PHP框架使用了Yii2,追朔原始碼,它是這麼判斷是否https連線的:

    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;
    }
OK,print_r($_SERVER),發現沒有HTTPS,也沒有HTTP_X_FORWARDED_PROTO。度娘一番,我使用的是nginx+php-fpm,在nginx配置上要加下以下這行:
		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了!