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

简介: 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的负载均衡和静态代理结合在一起,我们可以实现动静分离,这是实际应用中常见的一种场景。

动态资源,如jsptomcat或其他web服务器完成

静态资源,如图片、cssjs等由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来实现。80818082对应这两台Tomcat服务器的端口号。weight是我拟定的一个权重。

2.3.2 静态资源的负载均衡

这里的8182分别表示这台Nginx服务器将请求中附带的静态资源转交给了另外两台Nginx服务器来处理,8182分别是我上面在nginx81.confnginx82.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配置文件中的8182端口号全部不存在了)。

下面将两台Tomcat服务器全部关闭,再次访问。


可以看到,这个时候之前项目的主页面已经无法访问了,因为这个时候当负载均衡的Nginx服务器接到请求,并不会处理请求,而是将请求中的动态资源转发给Tomcat(其中采用负载均衡策略),但是此时它发现两台Tomcat都已经被关闭了(也就是nginx.conf配置文件中的80818082端口号都不存在了),所以这个时候,就无法处理网页中的动态资源了。这个时候Nginx就反馈回了上面的页面。

相关实践学习
部署高可用架构
本场景主要介绍如何使用云服务器ECS、负载均衡SLB、云数据库RDS和数据传输服务产品来部署多可用区高可用架构。
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
相关文章
|
18天前
|
运维 前端开发 应用服务中间件
LNMP详解(八)——Nginx动静分离实战配置
LNMP详解(八)——Nginx动静分离实战配置
40 0
|
18天前
|
Kubernetes 应用服务中间件 nginx
百度搜索:蓝易云【使用Kubernetes部署Nginx应用教程】
现在,你已经成功在Kubernetes集群上部署了Nginx应用。通过访问Service的外部IP地址,你可以访问Nginx服务。
50 4
|
18天前
|
安全 应用服务中间件 nginx
百度搜索:蓝易云【使用Debian、Docker和Nginx部署Web应用教程】
这些是在Debian上使用Docker和Nginx部署Web应用的基本步骤。根据您的需求和具体环境,可能还需要进行其他配置和调整。请确保在进行任何与网络连接和安全相关的操作之前,详细了解您的网络环境和安全需求,并采取适当的安全措施。
49 0
|
18天前
|
负载均衡 安全 前端开发
百度搜索:蓝易云【Nginx与Tomcat负载均衡-动静分离教程】
这些是将Nginx与Tomcat结合使用实现负载均衡和动静分离的基本步骤。根据您的需求和具体环境,可能还需要进行其他配置和调整。请确保在进行任何与网络连接和安全相关的操作之前,详细了解您的网络环境和安全需求,并采取适当的安全措施。
51 1
|
18天前
|
运维 前端开发 应用服务中间件
LNMP详解(八)——Nginx动静分离实战配置
LNMP详解(八)——Nginx动静分离实战配置
23 1
|
2天前
|
应用服务中间件 nginx
nginx指定location 实现反向代理 动静分离
nginx指定location 实现反向代理 动静分离
|
5天前
|
应用服务中间件 nginx
蓝易云 - 编写Dockerfile制作Web应用系统nginx镜像
这是一个基本的例子,你可能需要根据自己的应用进行调整。例如,你可能需要添加更多的配置,或者使用不同的Nginx版本。
18 2
|
10天前
|
Java 关系型数据库 Docker
docker打包部署spring boot应用(mysql+jar+Nginx)
docker打包部署spring boot应用(mysql+jar+Nginx)
|
18天前
|
运维 Serverless 应用服务中间件
Serverless 应用引擎产品使用之在阿里云Serverless中函数计算FC nginx 部署上去之后放置静态页面如何解决
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
281 0
|
18天前
|
运维 Java 应用服务中间件
Nginx+Tomcat动静分离及Nginx优化(企业案例)
Nginx+Tomcat动静分离及Nginx优化(企业案例)