【问题标题】:nginx location new location redirection cyclenginx location 新位置重定向循环
【发布时间】:2018-07-14 15:43:18
【问题描述】:

我将我网站上的一堆图片从 /images 移到了 /images/categories。我希望旧 URL 仍然从旧位置提供资产而不复制它们,因为我有引用这些 URL 的第 3 方。我尝试使用 location/try_files 块:

location /images {
    try_files /images/categories/$uri $uri;
}

问题是我得到了:

重写或内部重定向循环,同时内部重定向到“/images/categories/myimage.png”,客户端:172.27.0.1,服务器:app,请求:“GET /images/categories/myimage.png HTTP/1.1”,主机:“本地主机”,推荐人:

这里如何防止死循环?

【问题讨论】:

  • 将=404 添加到try_files 语句的末尾以防止循环。但是您的第一个学期会在 /images/categories/images/ 中查找文件。
  • 当我这样做时,直接链接到 /images/categories/my-image.jpg 或 /images/my-image.jpg 会显示实际存在的图像的 404。我很困惑。
  • 您是否在location /images 周围的块中为root 设置了值?
  • 是的,root /var/www/html/public;

标签: nginx


【解决方案1】:

我认为您的问题是 /images/categories 中的网址也与 /images 位置块匹配。所以你需要先匹配/images/categories。这是这样做的一种方法。

location ~ ^/images/categories/(.*) {
    try_files /images/categories/$1 =404;
}
location ~ ^/images/(.*) {
    try_files /images/$1 /images/categories/$1 =404;
}

【讨论】:

  • 这是朝着正确方向迈出的一大步。虽然如果我没记错的话,那里的第二条语句说要查看/images/categories 和 404,如果它不存在?在这种情况下,我希望它尝试/images/categories,然后尝试/images,然后尝试404。第一个块按我的意愿工作,第二个块显示404,当资产确实存在于/images/
  • 哦,对了,还有像 /images/x 这样的文件,它们 not 在 /images/categories/x 中。我已经更新了第二个位置块以反映这一点。
  • 宾果游戏!非常感谢
【解决方案2】:

请注意,根据http://nginx.org/r/try_files,最终参数实际上不是file,而是uri,导致nginx内部重定向,因此您报告的无限循环条件。

正如已经指出的,正确的方法可能是使用http://nginx.org/r/alias;否则,您可能希望使用 =code 规范跟踪您的 try_files,以确保不会发生重定向循环。


即,这将消除internal redirection cycle 错误:

location /images {
    try_files /images/categories/$uri $uri =410;
}

但是,您是否真的将 /images/ 部分作为 URL 方案的一部分,例如文件系统上的 /images/categories/images/myimage.png?如果不是,那么正确的解决方案可能是:

location /images/ {
    alias /var/www/html/public/images/categories/;
}
location /images/categories/ {
    root /var/www/html/public;
}

【讨论】:

    【解决方案3】:

    alias 指令可能非常适合满足您的要求。

    location /images {
        alias /var/www/html/public/images/categories;
    }
    

    【讨论】:

      猜你喜欢
      • 2021-09-15
      • 2019-06-16
      • 2013-11-27
      • 2014-03-09
      • 1970-01-01
      • 1970-01-01
      • 2015-02-26
      • 2011-06-04
      • 1970-01-01
      相关资源
      最近更新 更多