nginx配置图片服务器

在写前端代码的时候,发现图片如果采用相对路径,在某些情况下,会导致图片文件显示失败,经过查询资料,发现将图片的路径换为http的路径,可以解决这个问题;

下面就正式开始了
1、首先,服务器的操作系统是 ubuntu 16.04,通过 sudo apt-get install nginx 就可以安装稳定版的nginx的服务器啦

2、在安装完nginx后,需要在配置文件中添加对应的信息。ubuntu系统中,nginx.conf 的位置在 /etc/nginx/nginx.conf,打开这个文件,在http中新建一个server,在server中填写图片服务器的相关配置,

1
2
3
4
5
6
7
8
server {
listen 2048;
server_name localhost;
location /ckupload/{
alias /root/TestCase_picture/ckupload/;
autoindex on;
}
}
note
  1. server要在nginx的http{}内,不然配置文件的解析会失效
  2. nginx -c 可以检查默认配置文件的正确性

listen 表示最终的图片服务器的端口,
server_name 表示配置的虚拟主机,这里因为就用本机,所以写localhost 就ok啦。
location 表示访问的路径,
这里其实有两种配置方式:
root响应的路径:配置的路径(root指向的路径)+完整访问路径(location的路径)+静态文件
alias响应的路径:配置路径+静态文件(去除location中配置的路径),
也就是说: 如果用root ,则对应的实际图片路径为 /root/TestCase_picture/ckupload/chupload,显然路径是错误的,所以,在配置过程中,选用了 alias ,则实际路径为 /root/TestCase_picture/ckupload

这样就配置好了,需要注意的是,在完成配置之后,还要给 文件夹 读写权限。

在解决了图片服务器的问题后,新的问题出现了,数据库中的图片地址都是 用相对路径进行保存的,如何将相对路径处理为绝对路径呢?
伟大的jsoup
jsoup是一款Java的HTML解析器,主要用来对HTML解析

所以,通过jsoup就可以解决问题啦!!!!!!

1
2
3
4
5
6
7
8
9
10
11
12
13
public static String setImagesDomain(String htmlStr){ 
Document doc = Jsoup.parse(htmlStr);
Elements srcs = doc.select("img[src]");
String domainStr="http://localhost:2048";
for (Element element : srcs) {
String imgUrl = element.attr("src");
if (imgUrl.trim().startsWith("/")) {
imgUrl =domainStr + imgUrl;
element.attr("src", imgUrl);
}
}
return doc.toString();
}

这样,img路径问题也解决了。


nginx配置图片服务器
http://yoursite.com/2019/08/18/nginx配置图片服务器/
作者
yangchen
发布于
2019年8月18日
许可协议