VPS侦探论坛

标题: lnmpa1.3在nginx上配置ssl证书后,php无法获取$_SERVER['HTTPS'] [打印本页]

作者: zczdlnmp    时间: 2016-11-18 00:00
标题: lnmpa1.3在nginx上配置ssl证书后,php无法获取$_SERVER['HTTPS']
求助,按照https://www.vpser.net/manage/namecheap-free-ssl-nginx.html这个教程,配置好lnmpa上的ssl证书,server
    {
        listen 80;
        #listen [::]:80;
        server_name www.XXXX.com;
        return 301 https://www.XXXX.com$request_uri;
    }
server
{
        listen 443;
        server_name www.XXXX.com;

index index.html index.htm index.php default.html default.htm default.php;
        root  /data/www/XXXX;

ssl on;

ssl_certificate /usr/local/apache/conf/server.crt;

ssl_certificate_key /usr/local/apache/conf/server.key;

ssl_ciphers "EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5";

ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

ssl_prefer_server_ciphers on;

ssl_session_cache shared:SSL:10m;


include proxy-pass-php.conf;


location ~ [^/]\.php(/|$)

{

# comment try_files $uri =404; to enable pathinfo

try_files $uri =404;

fastcgi_pass unix:/tmp/php-cgi.sock;

fastcgi_index index.php;

include fastcgi.conf;

#include pathinfo.conf;

}


location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
        {
            expires      30d;
        }

        location ~ .*\.(js|css)?$
        {
            expires      12h;
        }

        access_log  /home/wwwlogs/www.XXXX.com.log;
}

访问都是正常的,但是为什么php在获取$_SERVER['HTTPS']的时候是空呢?
作者: zczdlnmp    时间: 2016-11-18 00:03
自己捣鼓了一晚上了,很多方法都去试了一遍但是就是无效,不知道各位或者军哥有没有遇到过这样的问题,可以给些指点
作者: licess    时间: 2016-11-18 09:12
编辑 /usr/local/nginx/conf/proxy.conf 里加上
proxy_set_header X-Forwarded-SSL on;
proxy_set_header X-Forwarded-Proto $scheme;
后重启一下nginx再看一下
作者: zczdlnmp    时间: 2016-11-18 11:02
标题: 回复 3# 的帖子
配上这个还是不行,我使用的是lnmpa,我只在nginx虚拟主机里,配置了上面那段,难道还需要在apache上做配置吗?
作者: licess    时间: 2016-11-18 13:07
标题: 回复 4# 的帖子
apache虚拟主机配置里加上 SetEnvIf X-Forwarded-Proto https HTTPS=on 重启apache,再看看
作者: zczdlnmp    时间: 2016-11-18 13:51
标题: 回复 5# 的帖子
谢谢军哥,折腾了一天了,真的没找到对的方法,按你上面说的那个配置配了,我在apahce虚拟主机里加了这么一段
SSLEngine on
SSLCertificateFile /usr/local/apache/conf/server.crt
SSLCertificateKeyFile /usr/local/apache/conf/server.key
SetEnvIf X-Forwarded-Proto https HTTPS=on
现在可以获取到了,谢谢
作者: licess    时间: 2016-11-18 15:26
我自己测试了一下,测试完结贴

只需要在  /usr/local/nginx/conf/proxy.conf 最后面加上 proxy_set_header X-Forwarded-Proto $scheme;
在对应apache虚拟主机或者httpd.conf 中加入SetEnvIf X-Forwarded-Proto https HTTPS=on 即可传递和接收是否使用的https协议

apache和nginx需要重启一下
作者: withero    时间: 2016-11-27 01:21
标记下。谢谢了。




欢迎光临 VPS侦探论坛 (https://bbs.lnmp.com/) Powered by Discuz! X3.4