Nginx 反向代理 IP 转发适用于 Shopify?

Nginx 反向代理 IP 转发适用于 Shopify?

我们正在尝试让我们的网站更加以内容为导向,虽然 Shopify 是一个很酷的电子商务平台,但在内容方面并不是那么出色。因此,我们将网站从 Shopify 上移出,并将 WordPress 放在 Nginx 服务器上。在该服务器上,我们已将商店反向代理到网站上的 /store,如下所示这个帖子

配置完成后一切都很好,但是由于当天的流量增加,我们面临着这样的禁令消息:

IP 封禁信息

我猜 Shopify 不会查看来自客户端的转发 IP,因此服务器会因为所有流量而被禁止。最终,这可能不是我们想要的解决方案,我们可能需要完全离开 Shopify。基本上我们的商店因为这个原因已经停业一整天了。

有人能确认这个方法无效吗?或者这只是我的配置错误。

这是来自 nginx 配置文件的位置:

location ~^/store/(collections|cart|products|shopify|pages|blogs|checkout|admin)/?/
{
    rewrite /store/(.*) /$1 break;
    proxy_pass https://xxxx.myshopify.com;
    proxy_set_header   Host             $host;
    proxy_set_header   X-Real-IP        $remote_addr;
    proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
    proxy_redirect off;
    client_max_body_size 10m;
    client_body_buffer_size 128k;
    proxy_connect_timeout 90;
}

非常感谢您的帮助。如果我能提供其他帮助来让这个问题更容易回答,请告诉我。

谢谢!

答案1

我再次收到了 Shopify 的回复。他们确认这是他们的问题:

我是 Shopify 的 Aaron,我刚刚在 Twitter 上回复了您!我刚刚从我们的升级支持团队那里得到了回复。这是由于 Shopify 最近添加了代码而发生的 - 对单个 IP 可以执行的操作有更严格的规定。由于来自商店的所有流量都显示为同一 IP,因此阻止软件会将其拦截并阻止流量两分钟 - 但由于这种情况持续发生,因此会导致持续停机。

我们的技术专家建议将其设置为 shop.domain.com 而不是 domain.com/shop,这样可以帮您解决问题 - 如果您继续遇到问题,请告诉我,我们会为您继续执行下一步!

当然,这不是解决方案,因为 SEO 是我们核心战略的一部分。

答案2

这是一篇旧帖子,但我想与发现此问题的其他任何人分享以下内容。

另一个选择是使用 CloudFront。请求将来自一系列 IP 地址,并可能缓解此问题。

假设您有 yourstore.com,并且有 blog.yourstore.com。您可以像这样设置 CloudFront 分发:

  • 来源:blog.yourstore.com
  • 行为:/blog -> blog.yourstore.com
  • 行为:/blog/* -> blog.yourstore.com
  • 行为:默认 (*) -> yourstore.myshopify.com

笔记:

  • 选择“使用原始缓存标头”作为行为。
  • 转发博客行为的主机、来源和引荐来源标头。
  • 允许博客行为使用“GET、HEAD、OPTIONS、PUT、POST、PATCH、DELETE”HTTP 方法。

然后,blog.yourstore.com 就可以使用 nginx 托管在 EC2 服务器上。我建议将非 CloudFront 请求(例如,Google 爬虫或手动访问 blog.yourstore.com 的人)301 重定向到 yourstore.com/blog。您可以通过 nginx 重写(除了托管 Wordpress 的其他 nginx 规则)来实现这一点,如下所示:

server {
  listen 80;
  server_name blog.yourstore.com;
  root /home/wordpress/www;

  listen 443 ssl;
  ssl_certificate /etc/ssl/yourstore.com.bundle.crt;
  ssl_certificate_key /etc/ssl/yourstore.com.key;

  return 301 https://yourstore.com/blog$request_uri;
}

对于将 www.yourstore.com 重定向到 yourstore.com,可以为 www.yourstore.com 设置第二个分发,将其指向 S3 存储桶,并配置 S3 存储桶以将请求重定向到 yourstore.com。

请注意,此设置假定您的商店位于 yourstore.com,而不是 yourstore.com/store。如果您希望使用 /store,则需要稍微调整一下。

答案3

不幸的是,这里的答案可能是“删除反向代理”。

如果您确实需要内容和购物在一起,您将需要增强 Shopify,以显示内容,关闭 IP 禁令,或接受转发的标头。

如果您可以容忍不同的域名,您可以将 Wordpress 放在主域名上,将 Shopify 放在子域名上,反之亦然。这不是一个好的解决方案,但却是最简单的。

如果幸运的话,其他人就会想出更好的解决方案。

相关内容