Magento 重定向 AWS 负载均衡器

Posted

技术标签:

【中文标题】Magento 重定向 AWS 负载均衡器【英文标题】:Magento redirecting AWS Load Balancer 【发布时间】:2017-03-10 15:21:39 【问题描述】:

下午好,

我有一个 Magento 安装,nginx 在 AWS 上的 Auto Scaling 组上运行,标准 3 个实例。为了重定向流量,我使用了带有 SSL 的负载均衡器,导致我的结构如下所示:

用户>负载均衡器(443端口)>实例(80端口)

我将使用 https 的 URL 更改为我的数据库 mg_core_config_data 表中的 URL。

我认为正在发生的问题如下:

每次我访问我的 URL 时,负载均衡器都会尝试获取正文内容以向​​我发送我请求的信息,这样,当我使用端口 80 时,负载均衡器会到达我的实例并尝试加载Magento,数据库中的 base_url 重定向到 https。通过此重定向,该过程再次重复,因为我被重定向回 https:// 并尝试再次获取端口 80 上的实例信息。我认为每个问题都在这个 base_url 中,我无法返回端口 80 的 magento 信息。

按照我的 nginx 配置:

server 
    listen 80 DEFAULT_SERVER;

    server_name _;
    root /home/ubuntu/www/mysite;
    index index.php index.html index.htm;

    location / 
        try_files $ uri $ uri / /index.php$is_args$args;
    

    location ~ \ .php $ 
        try_files $ uri /index.php = 404;
        fastcgi_pass unix: /run/php/php7.0-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $ document_root $ fastcgi_script_name;
        fastcgi_params include;
        fastcgi_cache CACHE;
        fastcgi_cache_methods GET HEAD;
        fastcgi_cache_valid 200 1m;
        fastcgi_cache_bypass $ no_cache;
        fastcgi_no_cache $ no_cache;
    

    ...

我通过 https 访问负载均衡器时遇到的错误:

有人有什么建议或经历过吗?

谢谢。

【问题讨论】:

【参考方案1】:

查看您的描述,问题在于您的实例认为它们是通过 HTTP(而不是 HTTPS)访问并重定向到 HTTPS。

这不是 ELB 问题,ELB 只是转发 HTTP 请求。这也不是 EC2 问题,因为 EC2 不在 HTTP 级别上运行。

重定向是由引起的 - 你的 nginx 服务器 - 你的 magento 安装

通常,ssl 重定向行为是在 Web 服务器级别配置的。

您共享的 nginx 配置 sn-p 中没有重定向。您没有共享整个配置文件,因此请在您的 nginx 配置文件中查找重定向或 301 或 302。还要调查您的 magento 安装文件夹中的其他 nginx 配置文件和 .htaccess 文件。

我不熟悉 Magento,但 Magento 也可能导致 http(s) 重定向。 确保将“外部”url(映射到 ELB 的那个)设置为基本 url,因为从最终用户的角度来看,这将是基本 url。

在https://www.siteground.com/tutorials/magento/magento_ssl.htm,您可以找到为 SSL 配置 Magento 的说明。可能值得尝试将基本 URL 设置为 http:// 并激活“安全 url”选项。

【讨论】:

以上是关于Magento 重定向 AWS 负载均衡器的主要内容,如果未能解决你的问题,请参考以下文章

AWS负载均衡器后面的ASP.NET Core 2.1 HTTPS重定向?

如何将域中的多个路径重定向到不同的 AWS 负载均衡器?

AWS 负载均衡器将 www.example.com 重定向到 example.com 不起作用

将 http 重定向到 https AWS 应用程序负载均衡器

使用 tomcat 服务器和 aws 负载均衡器将 http 请求重定向到 https

如何使用 aws 弹性负载均衡器将 http 请求强制重定向到独立乘客中的 https?