使用背景
之前都是用Tomcat访问图片资源,消耗比较大。使用nginx能够减少Tomcat中间件的IO,提高性能。本文介绍的是在windows环境上搭建nginx代理。
轮播图表中有这么两个字段,第一个是图片存在的物理地址(image_path),另一个是图片的访问地址,即通过静态代理访问的地址(image_url)。
代码实现
@RequestMapping("insert")
public String insert(Banner banner,BindingResult result,Model model,
MultipartFile image,HttpSession session){
BannerCon cond = new BannerCon();
cond.setName_v(banner.getName());
// 名称不能重复
long count = bannerService.queryCount(cond);
if(count > 0){
result.rejectValue("name", "", "名称不能重复");
}
// 如果上传图片为空
if(image.isEmpty()){
result.rejectValue("picture_path", "", "轮播图图片不能为空");
}
try {
// 处理图片
String imageName = image.getOriginalFilename();
// 截取后缀名
int position = 0;
if( (position = imageName.lastIndexOf(".")) > 0){
String suffix = imageName.substring(position).toLowerCase();
String prefix = UUIDGenerator.getUUID();
if(".png".equals(suffix) || ".jpg".equals(suffix)){
String newName = prefix + suffix;
File dest = new File(Constant.PICTURE_PATH,newName);
image.transferTo(dest);
// 给轮播图地址赋值
banner.setPicture_path(dest.getAbsolutePath());// 图片的存放路径
banner.setPicture_url(Constant.PICTURE_URL + newName);// 展示图片的路径
}else{
result.rejectValue("picture_path", "", "只支持.png或.jpeg的图片类型");
}
}
} catch (IOException e) {
result.rejectValue("picture_path", "", "图片上传失败");
e.printStackTrace();
}
// 返回错误信息
if(result.hasErrors()){
model.addAttribute("typeMap", util.getDictMap(10,false));// 生成终端类的下拉列表
return "cms/banner/insert";
}
// 保存数据
bannerService.insert(banner);
return "redirect:list";
}
最终保存到数据库中效果图:
搭建nginx环境
修改nginx.conf
修改img.conf
文件起名随意
server {
listen 80;
server_name img.power.combanner;
root D:/img/banner/;
location / {
index index.html;
}
}
修改hosts文件
用文本编辑器打开 C:\Windows\System32\drivers\etc\hosts
增加如下内容
127.0.0.1 img.power.combanner
意思是将 img.power.combanner 地址指向本机
或者安装HostAdmin Host Editor直接修改
测试
开启nginx代理,通过image_url直接访问图片,如果能访问成功,说明配置成功
负载均衡的配置
1.粘贴两个Tomcat
2.修改其中一个Tomcat的端口号(conf\server.xml)
3.修改nginx.conf
查找到#gzip on; 后加如下内容:
upstream localhost {
server localhost:8080 weight=1;
server localhost:8088 weight=1;
}
Weight 表示权重,配置两个tomcat接受请求的比例
4.接下来的步骤从和上面一样