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 负载均衡器将 www.example.com 重定向到 example.com 不起作用
将 http 重定向到 https AWS 应用程序负载均衡器