Nginx——Nginx主要应用之动静分离
Posted 张起灵-小哥
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Nginx——Nginx主要应用之动静分离相关的知识,希望对你有一定的参考价值。
文章目录:
2.4 启动两台Tomcat服务器、三台Nginx服务器;关闭防火墙
1.写在前面
nginx的负载均衡和静态代理结合在一起,我们可以实现动静分离,这是实际应用中常见的一种场景。
动态资源,如jsp由tomcat或其他web服务器完成
静态资源,如图片、css、js等由nginx服务器完成
它们各司其职,专注于做自己擅长的事情
动静分离充分利用了它们各自的优势,从而达到更高效合理的架构。
整个架构中,一个nginx负责负载均衡,两个nginx负责静态代理。Nginx在一台Linux上安装一份,可以启动多个Nginx,每个Nginx的配置文件不一样即可。
2.实现步骤
我这里呢,准备两台Tomcat服务器,一台Nginx服务器。但是我这里将nginx服务器的配置文件nginx.conf,再拷贝两份,也就是说,一共启动了三台Nginx服务器,一台负责负载均衡,另外两台负责静态代理。
2.1 拷贝两份nginx.conf文件,做静态代理
cp nginx.conf nginx81.conf
cp nginx.conf nginx82.conf
2.2 对负责静态代理的Nginx进行配置
vim nginx81.conf
nginx81.conf端口号,因为这两个机器只需要做静态代理,所以删除掉负载均衡的配置。
下面的location ~ 是静态代理的配置内容。
Nginx82.conf端口号,因为这两个机器只需要做静态代理,所以删除掉负载均衡的配置。
2.3 对负责负载均衡的Nginx进行配置
2.3.1 动态资源的负载均衡
这里的动态资源的负载均衡通过两台Tomcat来实现。8081、8082对应这两台Tomcat服务器的端口号。weight是我拟定的一个权重。
2.3.2 静态资源的负载均衡
这里的81和82分别表示这台Nginx服务器将请求中附带的静态资源转交给了 另外两台Nginx服务器来处理,81和82分别是我上面在nginx81.conf、nginx82.conf中配置的端口号。
2.4 启动两台Tomcat服务器、三台Nginx服务器;关闭防火墙
Tomcat:
/opt/apache-tomcat-9.0.0.M26/bin/startup.sh
/opt/apache-tomcat-9.0.13/bin/startup.sh
Nginx:
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx81.conf
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx82.conf
Firewalld:
systemctl stop firewalld
2.5 访问测试
在浏览器中输入 http:// 虚拟机ip /myweb,即可访问。
关闭nginx81或者nginx82其中任意一台Nginx服务器,同时关闭一台Tomcat服务器,再次访问。
这里仍然可以访问,是因为虽然其中一台静态代理的Nginx服务器被关闭了,但是还有另外一台静态代理的Nginx服务器在工作,所以这里依然可以解析img图片。而关闭其中一台Tomcat服务器,这个时候做负载均衡的Nginx服务器就会把动态资源的处理请求交给仅剩的那一台Tomcat服务器处理。所以这里依然可以访问。
下面将两台静态代理的Nginx服务器全部关闭,再次访问。
这个时候,可以看到图片已经显示不出来了,因为静态代理的Nginx服务器全部被关闭了,当负载均衡这台Nginx服务器接到请求,将请求转发给其中处理静态资源的静态代理Nginx服务器时,它发现这两台静态代理的Nginx服务器已经被关闭了,所以就无法处理静态资源了(也就是nginx.conf配置文件中的81、82端口号全部不存在了)。
下面将两台Tomcat服务器全部关闭,再次访问。
可以看到,这个时候之前项目的主页面已经无法访问了,因为这个时候当负载均衡的Nginx服务器接到请求,并不会处理请求,而是将请求中的动态资源转发给Tomcat(其中采用负载均衡策略),但是此时它发现两台Tomcat都已经被关闭了(也就是nginx.conf配置文件中的8081、8082端口号都不存在了),所以这个时候,就无法处理网页中的动态资源了。这个时候Nginx就反馈回了上面的页面。
以上是关于Nginx——Nginx主要应用之动静分离的主要内容,如果未能解决你的问题,请参考以下文章