【问题标题】:Use nginx directive to look for a jpg in another location使用 nginx 指令在另一个位置查找 jpg
【发布时间】:2018-11-05 09:25:21
【问题描述】:

我有一个通用的 nginx 规则从他们的 URI 提供 jpg。

因此,如果 URI 是“http://example.com/images/1.jpg”,它将在站点/images/1.jpg 的表单根目录下提供服务

如果在原始路径上找不到图像,我想尝试从替代路径提供图像。第二个位置怎么写?

这是我得到的:

location ~* ^.+\.(jpg|jpeg|gif|png|svg|js|css|mp3|ogg|mpe?g|avi|zip|gz|bz2?|rar|swf|ico)$ {
            try_files $uri $uri/ @fallback;
            access_log      off;
            expires         max;
            log_not_found   off;
    }

如何编写回退代码以在 /home/user/anotherfolder 等其他位置查找文件?

【问题讨论】:

    标签: nginx nginx-location


    【解决方案1】:

    您可以在正则表达式location 中使用命名捕获来保存文件名以供以后使用。您可以级联命名位置,以尝试不同的根:

    location ~* ^/images(?<filename>/.+\.jpg)$ {
        try_files $uri @other;
    }
    location @other {
        root /path/to/alternate;
        try_files $filename @fallback;
    }
    

    如果有合适的公共父目录,你可以在单个位置块中实现同样的事情。

    location ~* ^/images(?<filename>/.+\.jpg)$ {
        root /path/to/ancestor;
        try_files /dir/$uri /other/dir/$filename @fallback;
    }
    

    【讨论】:

    • 谢谢,但我的问题是我需要忽略完整的 URI 并只查找文件 - 所以在上面的示例中,我需要忽略 uri 的图像部分,只搜索 1。 jpg 在新位置
    猜你喜欢
    • 1970-01-01
    • 2012-11-09
    • 1970-01-01
    • 2019-01-20
    • 1970-01-01
    • 2016-09-26
    • 2012-04-22
    • 1970-01-01
    • 2020-03-26
    相关资源
    最近更新 更多