美文网首页
nginx代理访问文件(图片)

nginx代理访问文件(图片)

作者: sprainkle | 来源:发表于2018-12-07 15:48 被阅读29次

需求

需要使用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/nginxnginx 的安装目录,所以可以�猜想,rewrite 默认是重定向到 nginx目录下的 html 目录。

�所以可以得出结论:rewrite/data/images/,不是路由到�根目录下的 data 目录。

再结合第一次尝试的 root 配置,可以直接路由到文件系统的根目录。所以有了第三次尝试。

第三次尝试

        location /images {
            rewrite ^/images/(.*)$ /$1 break;
            root /data/images;
        }

重新加载配置。 成功访问。

附 —— nginx重新加载配置

$ nginx -s reload

相关文章

网友评论

      本文标题:nginx代理访问文件(图片)

      本文链接:https://www.haomeiwen.com/subject/cxgthqtx.html