VPS侦探论坛

 找回密码
 注册
查看: 5284|回复: 7

lnmpa1.3在nginx上配置ssl证书后,php无法获取$_SERVER['HTTPS']

[复制链接]
发表于 2016-11-18 00:00:59 | 显示全部楼层 |阅读模式

求助,按照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']的时候是空呢?
美国VPS推荐: 遨游主机LinodeLOCVPS主机云搬瓦工80VPSVultr美国VPS主机中国VPS推荐: 阿里云腾讯云。LNMP付费服务(代装/问题排查)QQ 503228080
 楼主| 发表于 2016-11-18 00:03:31 | 显示全部楼层


自己捣鼓了一晚上了,很多方法都去试了一遍但是就是无效,不知道各位或者军哥有没有遇到过这样的问题,可以给些指点
Linux下Nginx+MySQL+PHP自动安装工具:https://lnmp.org
发表于 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再看一下
美国VPS推荐: 遨游主机LinodeLOCVPS主机云搬瓦工80VPSVultr美国VPS主机中国VPS推荐: 阿里云腾讯云。LNMP付费服务(代装/问题排查)QQ 503228080
 楼主| 发表于 2016-11-18 11:02:05 | 显示全部楼层

回复 3# 的帖子




配上这个还是不行,我使用的是lnmpa,我只在nginx虚拟主机里,配置了上面那段,难道还需要在apache上做配置吗?
Linux下Nginx+MySQL+PHP自动安装工具:https://lnmp.org
发表于 2016-11-18 13:07:09 | 显示全部楼层

回复 4# 的帖子


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

军哥运维代购:http://shop63846532.taobao.com/

 楼主| 发表于 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
现在可以获取到了,谢谢
发表于 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需要重启一下
美国VPS推荐: 遨游主机LinodeLOCVPS主机云搬瓦工80VPSVultr美国VPS主机中国VPS推荐: 阿里云腾讯云。LNMP付费服务(代装/问题排查)QQ 503228080
发表于 2016-11-27 01:21:45 | 显示全部楼层

标记下。谢谢了。
Linux下Nginx+MySQL+PHP自动安装工具:https://lnmp.org
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|VPS侦探 ( 鲁ICP备16040043号-1 )

GMT+8, 2024-11-16 16:49 , Processed in 0.028260 second(s), 16 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表