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了!

### 配置 NginxPHP-FPM 的步骤 在 openEuler 22.03 系统上部署 NginxPHP-FPM,需要确保系统环境正确配置,并且安装的软件版本兼容。以下是详细的配置方法。 #### 1. 安装必要的依赖包 在开始之前,确保系统已更新并安装了所有必要的依赖包。例如 `pcre-devel` 是构建 Nginx 所需的,而 `libxml2-devel`、`openssl-devel` 等是编译 PHP 所需的[^5]。 ```bash yum install -y pcre-devel gcc make wget libxml2-devel openssl-devel ``` #### 2. 下载并安装 Nginx 下载最新稳定版的 Nginx 源码包,并按照以下步骤进行编译安装: ```bash wget http://nginx.org/download/nginx-1.24.0.tar.gz tar -zxvf nginx-1.24.0.tar.gz cd nginx-1.24.0 ./configure --with-http_ssl_module --with-stream make && make install ``` 默认情况下,Nginx 将安装到 `/usr/local/nginx/` 目录下[^4]。 #### 3. 下载并安装 PHP 7.4 由于 openEuler 默认提供的 PHP 版本可能较低,建议手动编译安装 PHP 7.4.x 版本。具体步骤如下: ```bash wget https://www.php.net/distributions/php-7.4.33.tar.gz tar -zxvf php-7.4.33.tar.gz cd php-7.4.33 ./configure --prefix=/usr/local/php \ --with-config-file-path=/etc/php \ --enable-fpm \ --with-mysqli \ --with-pdo-mysql \ --with-openssl \ --enable-mbstring \ --enable-zip \ --enable-bcmath \ --with-curl \ --with-zlib \ --with-gd \ --with-jpeg-dir \ --with-freetype-dir make && make install ``` 注意:PHP 7.4 中部分选项已被取消或更改,如 `--with-mcrypt` 再支持,请根据实际需求调整配置参数[^3]。 #### 4. 配置 PHP-FPM 安装完成后,复制默认的配置文件并进行修改: ```bash cp php.ini-production /etc/php/php.ini cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm chmod +x /etc/init.d/php-fpm ``` 编辑 PHP-FPM 的主配置文件 `/usr/local/php/etc/php-fpm.conf` 和池配置文件 `/usr/local/php/etc/php-fpm.d/www.conf`,确保以下内容正确设置: ```ini listen = /var/run/php-fpm.sock user = nginx group = nginx pm = dynamic pm.max_children = 50 pm.start_servers = 5 pm.min_spare_servers = 5 pm.max_spare_servers = 35 ``` 启动 PHP-FPM 并设置为开机自启: ```bash /etc/init.d/php-fpm start chkconfig --add php-fpm chkconfig php-fpm on ``` #### 5. 配置 Nginx 支持 PHP 编辑 Nginx 的配置文件 `/usr/local/nginx/conf/nginx.conf`,添加对 PHP 的支持: ```nginx server { listen 80; server_name localhost; root /usr/share/nginx/html; index index.php index.html index.htm; location / { try_files $uri $uri/ =404; } location ~ \.php$ { include fastcgi_params; fastcgi_pass unix:/var/run/php-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } } ``` 重启 Nginx 以应用更改: ```bash /usr/local/nginx/sbin/nginx -s reload ``` #### 6. 测试 PHP 功能 创建一个测试 PHP 文件以验证配置是否成功: ```bash echo "<?php phpinfo(); ?>" > /usr/share/nginx/html/index.php ``` 访问服务器 IP 地址或域名,确认页面能够正常显示 PHP 信息。 --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值