Nginx 反向代理正在同一请求中加载来自两个位置块的内容

Nginx 反向代理正在同一请求中加载来自两个位置块的内容

我有一个 nginx 反向代理设置,用于将流量路由到两个单独的项目。我希望所有这些流量都在一个子域上,但根据路由目录以这种方式更改项目。

我的主网站托管在 google app engine 上,辅助网站是 shopify 应用程序。

因此,我希望 app engine 网站位于 www.example.com,shopify 网站位于 www.example.com/shop

这是我的 nginx 配置

server {
    server_name www.example.com;
    location / {
        proxy_pass https://appengine-app.com;
    }
    location /store {
        proxy_set_header Host example.myshopify.com;
        proxy_pass https://example.myshopify.com;
    }
}

当我转到www.example.com/store我的 shopify 应用程序时,一切看起来都很好,但大约 5 秒钟后,我的应用引擎应用程序也会加载。两者都在加载 - 我看到我的应用引擎应用程序的导航,然后是整个 shopify 应用程序页面,然后是我的应用引擎应用程序的主体...

我不明白两者是如何在同一个窗口中加载的,但我觉得这与设置代理标头有关,/store这是我可以让 shopify 应用程序加载的唯一方法。

如果我删除该location /阻止,那么 shopify 应用程序将按我预期的方式加载 - 对我来说,这表明这是一个配置问题,而不是我的应用程序的问题。

我是否遗漏了某些设置?

答案1

更改定义的顺序location或添加=因此模式匹配停止(location = /)。

您可以找到有关 nginx 如何匹配的更多信息在文档中

编辑:刚刚看了谷歌的nginx.conf 这里。看起来服务器期望端口 8080 上有 HTTP 流量,而不是默认的 80。

相关内容