image - 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:
- 试图让 NGINX 在带有或不带有尾随的路径上响应静态图像
/
- 试图让 NGINX 以正确的内容类型响应浏览器理解
解决方案
alias
您可以使用 atry_files
来定义文件名,而不是语句。优点是文件的扩展名将被声明,这将使 MIME 类型正常工作。
例如:
location /images/logo {
root /var/www;
try_files /logo.png =404;
}
有关详细信息,请参阅此文档。
推荐阅读
- python - Mailgun 内联图像 utf-8 png
- ruby-on-rails - 在 Rails API + React 客户端中实现用户模拟
- python - Python 中的 AES 加密 - 使用 pycryptodome 和密码学时的不同结果
- javascript - ArcGIS Web 应用程序中的注销按钮
- kubernetes - Kubernetes 水平 Pod 自动缩放初始延迟?
- google-apps-script - TypeError:在对象 9 中找不到函数替换。(第 51 行,文件“main”)
- java - 仅当键不存在时如何组合两个 HashMap?
- apache - .htaccess 重定向规则不按顺序执行
- c# - 导入excel逐行读取,然后使用softartisans ExcelWriter插入数据库c#
- python - API 给出 TypeError: unhashable type: 'dict'