lnmpa环境中为magento配置ssl

  • A+
所属分类:Nginx

解决了nginx(lnmp)中为magento配置SSL的问题,但如何在lnmpa中配置呢,lnmpa中是没有fastcgi的,那么在代理模式下问题如何解决呢,我们首先看一下lnmpa是如何运行的.

Web服务器环境: linux + Ningx proxy + Apache + mod_php + MySQL(lnmpa服务器环境)
由Nginx 提供静态文件处理,PHP文件通过代理的方式由 Apache mod_php 来处理PHP请求。

导致SSL安装失败的原因在之前的文章中已经说的很清楚了,那接下来我们来解决在lnmpa中的配置问题

在代理环境下添加以下配置

重要步骤1:
proxy_set_header X-Forwarded-Proto $scheme;
给PHP的$_SERVER 变量数组显式增加发起请求的脚本协议。
添加改配置文件保存后运行:service nginx -s reload 重新加载配置文件。
然后用如下一句话脚本测试看看通信协议是否已经添加:


运行https://example.com/s.php
查看源代码,如果看到这句 [HTTP_X_FORWARDED_PROTO] => https 表示第一步已经成功。
完整的proxy.conf 配置内容如下:

proxy_connect_timeout 30s;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 32k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_redirect off;
proxy_hide_header Vary;
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503;
proxy_set_header Accept-Encoding '';
proxy_set_header Host $host;
proxy_set_header Referer $http_referer;
proxy_set_header Cookie $http_cookie;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-By $server_addr:$server_port;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;

引用proxy.conf 的相关配置文件如下:

location @apache {
internal;
proxy_pass https://127.0.0.1:88;
include proxy.conf;
}

location ~ .*\.(php|php5)?$
{
proxy_pass https://127.0.0.1:88;
include proxy.conf;
}

并在Magento 根目录的index.php里Mage::run($mageRunCode, $mageRunType); 代码前添加如下代码,

重要步骤2:

if( isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https') {
$_SERVER['HTTPS'] = 'on';
$_SERVER['SERVER_PORT'] = 443;
}

经过以上两步,redirect loop 问题完美解决,网站用https 协议打开正常了。

Via:https://hi.baidu.com/magecommerce/item/ef3524f94be84613fe3582ca

avatar

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

目前评论:1   其中:访客  1   博主  0

    • avatar 傻妞 0

      感谢博主,终于解决了这个问题