首页 > 解决方案 > Nginx 在接收完整路径时服务单个静态文件失败

问题描述

我一直在设置一个非常简单的 nginx 配置块,只是为了使用别名在路径上提供单个图像。这是配置:

location /images/logo/ {
    alias /var/www/logo.png;
}

请求打开服务器hostname/images/logo会给我推送的图像(未显示)。但是,使用位置中定义的尾随 / 请求它会给我一个错误。具体基于日志的索引:

[警报] 16367#16367: *3 "/var/www/logo.pngindex.html" 不是目录

这是令人沮丧的,但好的,我添加autoindex off;到配置块。还是一样的错误。我试图将位置更改为正则表达式以使尾随/可选,但这似乎也没有多大作用。

我觉得被一个简单的静态别名打败了。我只是想要返回图像的路径/images/logo/,而不管尾随斜杠如何。有谁知道一个简单的解决方法?

此外,我假设添加default_type image/png;到块中会修复内容类型,因此 NGINX 会帮助浏览器显示而不是下载图像,但这似乎也不起作用。

TLDR:

标签: imagenginxstaticcontent-type

解决方案


alias您可以使用 atry_files来定义文件名,而不是语句。优点是文件的扩展名将被声明,这将使 MIME 类型正常工作。

例如:

location /images/logo {
    root /var/www;
    try_files /logo.png =404; 
}

有关详细信息,请参阅此文档


推荐阅读