【问题标题】:Why isn't proxy_pass in Nginx handling sub uris?为什么 Nginx 中的 proxy_pass 不处理子 uri?
【发布时间】:2020-09-04 22:47:30
【问题描述】:

我正在尝试将我的网络应用程序中的子路径代理到资产服务器(以避免跨域问题)。

我已将此配置添加到 nginx.conf 中的服务器上下文中。

location /assets2/ {
    proxy_pass http://itype-assets/videos/transparent/classroom.png;
}

location /assets/ {
    proxy_pass http://itype-assets/;
}

添加此配置后,我发现:

http://localhost:8080/assets2/ - 提供预期的图像

http://localhost:8080/assets/videos/transparent/classroom.png - 返回 404

我在这里错过了什么?

编辑:

经过进一步调查,我发现删除后续规则可以解决问题:

    location ~ ^.+\..+$ {
        try_files $uri =404;
    }

但是,我需要该规则来提供我的静态文件。更改声明规则的顺序不会改变行为。

所以我的问题变成了,如何将 proxy_pass 规则与 try_files 规则一起使用?

【问题讨论】:

    标签: nginx nginx-reverse-proxy nginx-config


    【解决方案1】:

    事实证明,nginx 总是会通过前缀位置匹配来解析正则表达式位置匹配。

    可以通过将我的位置声明修改为:

    location ^~ /assets/ {
        proxy_pass http://itype-assets/;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-09-28
      • 2013-04-15
      • 2019-05-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-06
      • 2018-07-01
      相关资源
      最近更新 更多