我正在从apache转换到nginx,我无法获得别名来提供图像。阅读nginx文档,在Google中潜水以及哪些内容都没有给我带来任何可接受的结果;(
图片位于C:/xampp/htdocs/content/XYZ/thumbn/image.jpg
XYZ
部分是动态的并且会发生变化。
Nginx设置为提供来自root C:/nginx/public_html/domain.dev/
在apache中我简单地制作了Alias /CDN "C:\xampp\htdocs\content"
这样,当我请求www.domain.dev/CDN/XYZ/thumbn/image.jpg
时,我会从别名目录中获取图像。
所以我试图在nginx中复制相同的内容
location /CDN {
alias C:/xampp/htdocs/content;
autoindex on; # just there to see if it works.
}
不幸的是,当我访问图像www.domain.dev/CDN/XYZ/thumbn/image.jpg
时,我得到404.在Nginx日志中,我看到以下记录:
2017/07/04 16:43:32 [error] 10532#6488: *4 CreateFile() "C:/nginx/public_html/domain.dev/CDN/XYZ/thumbn/two.jpg" failed (3: The system cannot find the path specified), client: 127.0.0.1, server: www.domain.dev, request: "GET /CDN/XYZ/thumbn/two.jpg HTTP/1.1", host: "www.domain.dev"
它是列出目录内容的方式。
现在,如果我将位置块更改为此
location ^~ /CDN/ {
alias C:/xampp/htdocs/content/;
}
我在日志中遇到同样的错误,只有这样才能让它工作(但不是我需要的方式)当我使用这个位置块时
location ^~ /CDN/ {
alias C:/xampp/htdocs/content/XYZ/thumbn/;
}
然后显示图像,但图像的网址不同,对我的项目无效。
现在的问题是:我如何只在同一别名下的多个静态目录中提供图像? 图像位于以下结构中
C:/xampp/htdocs/content/one/thumbn/image.jpg
C:/xampp/htdocs/content/two/thumbn/cats.jpg
C:/xampp/htdocs/content/three/thumbn/dogs.jpg
C:/xampp/htdocs/content/another_random_direcotry/thumbn/random.jpg
它们应该通过URL访问,如下所示
www.domain.dev/CDN/one/thumbn/image.jpg
www.domain.dev/CDN/two/thumbn/cats.jpg
www.domain.dev/CDN/three/thumbn/dogs.jpg
www.domain.dev/CDN/another_random_direcotry/thumbn/random.jpg
Nginx甚至可以实现这一点吗?那我怎么做到这一点?这个场合需要正则表达式吗?
完整配置文件here
答案 0 :(得分:0)
试试这个
location /CDN/ {
alias C:/xampp/htdocs/content/;
}
答案 1 :(得分:0)
问题是由
引起的 location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
expires 7d;
}
当我注释掉这个位置指令时,我可以从别名目录访问图像。
这样可以删除图像的过期标题,如果启用此功能,则无法访问图像。