我们正在尝试让我们的网站更加以内容为导向,虽然 Shopify 是一个很酷的电子商务平台,但在内容方面并不是那么出色。因此,我们将网站从 Shopify 上移出,并将 WordPress 放在 Nginx 服务器上。在该服务器上,我们已将商店反向代理到网站上的 /store,如下所示这个帖子。
配置完成后一切都很好,但是由于当天的流量增加,我们面临着这样的禁令消息:
我猜 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 放在子域名上,反之亦然。这不是一个好的解决方案,但却是最简单的。
如果幸运的话,其他人就会想出更好的解决方案。