nginx的动静分离
在项目中通常会使用到大量的css,js,img等静态资源文件
不管是传统项目还是spa项目都是如此,需要将静态资源文件引入
nodejs1和nodejs2都要引入相同的静态资源,后续如果要做服务器水平扩展时,nodejs3,nodejs4都需要引入相同的静态资源,浪费服务器资源
动静分离原理图:
tomcat1,tomcat2存放的是处理动态请求的文件
实现静态分离
1)先搞一个静态资源服务器
copy宿主机nginx共享目录一份:nginx2
修改host文件
hosts:192.168.1.31 static.feidao.com
挂载:
需要建一个存放静态资源的目录,然后执行以下命令
docker run -it -p 1010:1010 --name=staticNginx -v /home/data/nginx2:/etc/nginx -v /home/data/nginx2data:/home/nginx 6678c7c2e56c(镜像id)
执行之后查看
修改nginx2中nginx.conf与default.conf文件
nginx.conf中不要配置upstream,因为nginx2只是用作静态资源服务器用,并非是代理服务器
default.conf配置如下:
listen 1010;
server_name static.feidao.com;
#charset koi8-r;
#access_log /var/log/nginx/host.access.log main;
location / {
root /home/nginx;
#proxy_pass http://172.17.0.3:8080;
#proxy_pass http://www.feidao.com;
index index.html index.htm;
}
别忘了重启staticNginx
新建nginx2data目录引入静态资源
输入: http://static.feidao.com:1010/
静态资源服务器搞出来了
2)现在有web服务器两台tomcat1、tomcat2,静态资源服务器一台staticNginx,可以更改代理服务器myNginx的配置了;
nginx.conf配置如下:
#gzip on;
upstream www.feidao.com{
server 172.17.0.3:8080 weight=1;
server 172.17.0.2:9090 weight=2;
}
upstream static.feidao.com{
server 172.17.0.5:1010;
}
include /etc/nginx/conf.d/*.conf;
default.conf配置如下:
listen 80;
server_name www.feidao.com;
#charset koi8-r;
#access_log /var/log/nginx/host.access.log main;
location / {
#root /usr/share/nginx/html;
#proxy_pass http://172.17.0.3:8080;
proxy_pass http://www.feidao.com;
index index.html index.htm;
}
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ {
proxy_pass http://static.feidao.com;
}
location ~ .*\.(js|css)?$ {
proxy_pass http://static.feidao.com;
}
location ~ .*\.(html)?$ {
proxy_pass http://static.feidao.com;
}
3)修改tomcat1、tomcat2中的index.jsp,方便myNginx代理服务器的代理效果
tomcat1中的index.jsp修改如下
tomcat2修改
4)最终动静分离效果
输入: http://www.feidao.com/
出现下图算是动静分离成功