Nginx——Nginx主要应用之动静分离

Posted 张起灵-小哥

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Nginx——Nginx主要应用之动静分离相关的知识,希望对你有一定的参考价值。

文章目录:

1.写在前面

2.实现步骤

2.1 拷贝两份nginx.conf文件,做静态代理

2.2 对负责静态代理的Nginx进行配置

2.3 对负责负载均衡的Nginx进行配置

2.3.1 动态资源的负载均衡

2.3.2 静态资源的负载均衡

2.4 启动两台Tomcat服务器、三台Nginx服务器;关闭防火墙

2.5 访问测试


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主要应用之动静分离的主要内容,如果未能解决你的问题,请参考以下文章

Nginx的应用之动静分离

Nginx之动静分离

nginx三 之动静分离

图文详解 配置Nginx+Tomcat负载均衡动静分离集群

Nginx之http服务器(动静分离)+ rewrite

详解Nginx主要应用场景/反向代理/负载均衡/动静分离/HTTP服务器