Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Image 接收完整路径时,为单个静态文件提供服务的Nginx失败_Image_Nginx_Static_Content Type - Fatal编程技术网

Image 接收完整路径时,为单个静态文件提供服务的Nginx失败

Image 接收完整路径时,为单个静态文件提供服务的Nginx失败,image,nginx,static,content-type,Image,Nginx,Static,Content Type,我已经设置了一个非常简单的naivenginx配置块,只为使用别名的路径上的单个映像提供服务器。以下是配置: location /images/logo/ { alias /var/www/logo.png; } 在hostname/images/logo上请求服务器会给我推送(未显示)的图像。但是,使用位置中定义的尾随/来请求它会给我一个错误。特别是基于日志的索引: [警报]16367#16367:*3“/var/www/logo.pngindex.html”不是目录 这是令人沮丧的

我已经设置了一个非常简单的naivenginx配置块,只为使用别名的路径上的单个映像提供服务器。以下是配置:

location /images/logo/ {
    alias /var/www/logo.png;
}
hostname/images/logo
上请求服务器会给我推送(未显示)的图像。但是,使用位置中定义的尾随/来请求它会给我一个错误。特别是基于日志的索引:

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

这是令人沮丧的,但我添加了
autoindex off到配置块。还是同样的错误。我试图将位置更改为正则表达式,以使尾部的
/
可选,但这似乎也没什么作用

我觉得被一个简单的静态别名打败了。我只想让路径
/images/logo/
返回图像,而不考虑后面的斜杠。有人知道这个问题的简单解决方法吗

此外,我假设添加
default\u-type图像/png到块将修复内容类型,因此NGINX将帮助浏览器显示图像,而不是下载图像,但这似乎也不起作用

TLDR:

  • 试图让NGINX在有尾随或无尾随的路径上以静态图像响应
    /
  • 试图让NGINX以浏览器能够理解的正确内容类型作出响应

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

例如:

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

有关详细信息,请参阅。

是否仍然无法使用尾部斜杠,这是我最大的问题。它确实提供文件。仅尾部斜杠仍然是一个问题。另外,请注意,尾部的
/
已从
位置
语句中删除,以便它与带有或不带有尾部的
/
的URI相匹配。我已经测试过这个解决方案,它可以与任何以
/images/logo
开头的URI一起工作。仍然得到:
[05/Jan/2020:23:56:17+0000]“GET/images/logo/HTTP/1.1”404 199
我认为它可以匹配,也可以不匹配,但我真的不想这么做。