springboot+nginx实现负载均衡和动静分离
首先,在idea中创建springboot项目,把该项目修改端口号后分别打包三次
另注意,打包的时候可以在pom.xml中指定打包的包名,我这里分别设置了不同的包名,好区分
然后把三个jar包放在linux下的usr/local目录下(static是等下静态分离的)
然后配置nginx配置文件
上面的upstream表示把请求分配到不同的服务器中
下面的location /myweb 表示访问/myweb时会将请求跳转到上面的那个upstream中
这里的www.myweb.com是自己随便取的名字,注意上下的名字要相同,一一对应。
然后就可以启动nginx,运行3个jar包(注意关闭防火墙systemctl stop firewalld)
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
java -jar 01-myweb.jar &
java -jar 02-myweb.jar &
java -jar 03-myweb.jar &
这里负载均衡就实现了,在浏览器上输入192.168.175.128/myweb就会由nginx向三个服务器发送请求。
动静分离的话,准备好一张图片
复制static文件夹,到这里
这里要特别注意:因为我配置了server.servlet.context-path=/myweb
所以静态资源不能直接放在static里,要在static文件夹里新建一个名为myweb的文件夹,把原来static里面的静态资源文件放到myweb里
然后在原来的nginx配置文件的server中加上这个,表示访问的路径中包含括号里的,就会到linux中的/usr/local/myweb2/static里面获取资源文件
这里就实现动静分离了,访问静态资源文件时就是从nginx中获取。
为什么要在static里再创建一个myweb文件夹呢?
因为root表示的是本地磁盘根路径,表示的是192.168.175.128(我的地址),
然而在浏览器上发出请求的地址是192.168.175.128/myweb
myweb是我配置的项目名,只有加上这个才能访问到我的myweb项目
用户访问静态资源文件是192.168.175.128/myweb/静态资源文件
相当于/usr/local/myweb2/static/myweb/静态资源文件
如果我们不创建一个myweb文件夹的话,我们的静态资源文件就存放在
相当于/usr/local/myweb2/static/静态资源文件
这样用户当然访问不到静态资源文件。
