需求
需要使用nginx代理访问服务器上某个目录的图片。图片存放目录为:/data/images/
。
第一次尝试
location /images {
root /data/images;
}
访问失败,查看nginx
的错误日志:
2018/12/07 15:28:18 [error] 22894#0: *7 open() "/data/images/images/test.jpeg" failed (2: No such file or directory),
client: 192.168.0.128, server: localhost, request: "GET /images/test.jpeg HTTP/1.1", host: "192.168.0.51"
日志打印了 open() "/data/images/images/test.jpeg" failed
, No such file or directory
,可以看出与我们想要的结果:/data/images/test.jpeg
有所出入,
即多了一层/images
。
第二次尝试
通过 rewrite
模块,将访问路径重写。
location /images {
rewrite ^/images/(.*)$ /data/images/$1 break;
}
还是访问失败,查看nginx
的错误日志:
2018/12/07 15:13:31 [error] 22611#0: *3 open() "/usr/local/nginx/html/data/images/test.jpeg" failed (2: No such file or directory),
client: 192.168.0.128, server: localhost, request: "GET /images/test.jpeg HTTP/1.1", host: "192.168.0.51"
日志打印了 open() "/usr/local/nginx/html/data/images/test.jpeg" failed
, No such file or directory
,这次多了/usr/local/nginx/html
。
而/usr/local/nginx
是 nginx
的安装目录,所以可以�猜想,rewrite
默认是重定向到 nginx
目录下的 html
目录。
�所以可以得出结论:rewrite
到 /data/images/
,不是路由到�根目录下的 data
目录。
再结合第一次尝试的 root
配置,可以直接路由到文件系统的根目录。所以有了第三次尝试。
第三次尝试
location /images {
rewrite ^/images/(.*)$ /$1 break;
root /data/images;
}
重新加载配置。 成功访问。
附 —— nginx重新加载配置
$ nginx -s reload