NGINX - 向静态文件位置添加后缀

NGINX - Adding a suffix to static file location

我正在使用 nginx 来服务器静态图像文件。在我的目录中,所有图像都以扩展名 _.txt 存储(基本上重命名为 .txt)。例如:background.png 将存储为 background.png.txt

如何重定向对域的查找。com/images/background.png 以查找 /static/images/background.png_.txt

到目前为止,这是我的 nginx 配置...

    location /images/  {
        alias    /static/images/;
        access_log off;
    }       

这适用于我的服务器。它只是接受对图像目录中某些内容的请求并检查它是否存在,然后检查它是否存在 .txt 扩展名,如果没有找到,最后给出 404 错误。

location /images/ {
default_type "image/gif";
try_files $uri $uri.txt $uri =404;
}

请确保您没有复制 location/images 块。如果它不存在,请添加它,但它应该已经存在,因此只需向其中添加 try_files 行。

正如我在评论中所写,如果您的服务器在转到图像目录时尚未在 static 中搜索,我会感到惊讶。但是,如果我分享的代码不起作用,您可以将修改后的图像文件的路径添加到块中,例如:

location /images/ {
root /home/username/path_to_site/domain.com/static/images;
default_type "image/gif";
try_files $uri $uri.txt $uri =404;
}

编辑 如果您检查响应 headers,某些浏览器会将以这种方式提供的图像显示为 content-type:text/plain。一种覆盖它的技巧是直接在图像位置块中指定类型:

location /images/ {
default_type "image/gif";
try_files $uri $uri.txt $uri =404;
types {
    text/plain    gif;
    image/jpg     jpeg jpg;
    image/png     png;
    image/gif     gif;
    image/x-icon  ico;
 }
}

这些类型在 nginx 的其他地方定义,但如果您不想在服务器的内部进行手术,这会更容易。重要的一行是 text/plain gif;。这将在图像目录中找到的任何文本文件定义为 image/gif.

最后的想法:这可能更好地完成 rewrite,但是也许其他人知道该方法的细节。