我正在使用Nginx来存储静态图像文件。在我的目录中,所有图像都以扩展名_.txt(基本上重命名为 .txt)存储。例如:background.png将存储为background.png .txt
如何重定向domain.com/images/background.png的查找以查找/static/images/background.png_.txt
到目前为止,这是我的Nginx配置...
location /images/ {
alias /static/images/;
access_log off;
}
答案 0 :(得分:1)
这在我的服务器上有效。它只是在图像目录中获取对某事物的请求,并检查其是否存在,然后检查其是否存在.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;
}
修改
如果您检查响应标题,则某些浏览器会将以这种方式提供的图像显示为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来完成,但是也许其他人知道该方法的细节。