nginx给静态资源配置前缀访问

做springboot程序时想动静分离,使用nginx管理用户上传的图片。但因为配置springboot的时候加了server.context-path=/prefix,导致访问图片地址自动加了前缀进行访问,xxx.xx.xx.xxx:80/prefix/uploadimg/imgcategory/xx.jpg,通过这样的地址来对图片进行访问。

网上nginx配置图片的参数,大致如下

location ~ .*\.(gif|jpg|jpeg|png)$ {  
      root /home/images/;#指定图片存放路径  
}

这样可以通过xxx.xx.xx.xxx:80/uploadimg/imgcategory/xx.jpg来访问图片,但是不符合上面访问的要求,没有前缀prefix,导致nginx代理springboot程序时访问不到图片。

试了很多正则方法,也没有达到要求,后来才发现自己没有理解root的规则。
nginx指定文件路径有两种方式root和alias。
其中root的处理结果是:root路径+location路径。
alias的处理结果是:使用alias路径替换location路径。

要达到上述加前缀访问的要求,使用root的方法就是,创建/root/images/prefix文件夹,通过添加一层文件路径进行访问。
这种方式的过程就是 访问图片类型的url地址时,比如访问
xxx.xx.xx.xxx:80/prefix/uploadimg/imgcategory/xx.jpg
就是访问
/home/images/ + prefix/uploadimg/imgcategory/xx.jpg

我使用的是alias的方法,

location /prefix/uploadimg/ {
            alias /home/images/uploadimg/;
}

这样访问/prefix/uploadimg/的时候就是直接访问/home/images/uploadimg了。
比如访问
xxx.xx.xx.xxx:80/prefix/uploadimg/imgcategory/xx.jpg
就是访问
/home/images/uploadimg/+imgcategory/xx.jpg
本地文件比第一种方法少一层文件夹。

linux安装eginx过程

eginx 命令
进入到nginx的sbin目录
启动 ./nginx
重启 ./nginx -s reload
停止 ./nginx -s stop

你可能感兴趣的:(工具配置,nginx,intellij,idea,spring,boot)