zczdlnmp 发表于 2016-11-18 00:00:59

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:31

自己捣鼓了一晚上了,很多方法都去试了一遍但是就是无效,不知道各位或者军哥有没有遇到过这样的问题,可以给些指点

licess 发表于 2016-11-18 09:12:03

编辑 /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:05

回复 3# 的帖子

配上这个还是不行,我使用的是lnmpa,我只在nginx虚拟主机里,配置了上面那段,难道还需要在apache上做配置吗?

licess 发表于 2016-11-18 13:07:09

回复 4# 的帖子

apache虚拟主机配置里加上 SetEnvIf X-Forwarded-Proto https HTTPS=on 重启apache,再看看

zczdlnmp 发表于 2016-11-18 13:51:21

回复 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:40

我自己测试了一下,测试完结贴

只需要在/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:45

标记下。谢谢了。:victory:
页: [1]
查看完整版本: lnmpa1.3在nginx上配置ssl证书后,php无法获取$_SERVER['HTTPS']