nginx代理访问文件(图片)

需求

需要使用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
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 亲爱的儿子,昨天你的表现很勇敢,可是星期天的回家作业要求复习你做的不够好,昨天爬山很累也没想到提醒你复习...
    塘小四7肖思源的爸爸肖广立阅读 1,450评论 0 1
  • 今天我休息了,坐在沙发上,打开手提,抱着它聊了一上午,主要确认明天要过来上课的亲们。其实这种日子,我过了好几年了。...
    黄玉翠阅读 3,157评论 0 0
  • 表面上的风平浪静,暗地里的波涛汹涌。不是所有的现象都是平和的和谐的,总有人会在隐忍,会在不断的原谅,放弃诉说,我真...
    cccooolll阅读 1,319评论 0 0
  • S7的英雄联盟让我看见了希望的曙光 四年之前,我进入了英雄联盟这个巨大的局中。 他让我疯狂,让我沉迷,让我快乐。 ...
    李珏J阅读 3,214评论 7 1

友情链接更多精彩内容