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

本文涉及的产品
网络型负载均衡 NLB,每月750个小时 15LCU
传统型负载均衡 CLB,每月750个小时 15LCU
应用型负载均衡 ALB,每月750个小时 15LCU
简介: 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就反馈回了上面的页面。

相关实践学习
SLB负载均衡实践
本场景通过使用阿里云负载均衡 SLB 以及对负载均衡 SLB 后端服务器 ECS 的权重进行修改,快速解决服务器响应速度慢的问题
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
相关文章
|
7月前
|
应用服务中间件 nginx
Nginx Location 深入剖析及动静分离简易配置
Nginx Location 深入剖析及动静分离简易配置
101 3
|
8月前
|
Ubuntu 前端开发 JavaScript
技术笔记:Ubuntu:一个部署好的tomcat应用(war包)怎么用Nginx实现动静分离?
技术笔记:Ubuntu:一个部署好的tomcat应用(war包)怎么用Nginx实现动静分离?
|
4月前
|
Kubernetes 负载均衡 应用服务中间件
k8s学习--ingress详细解释与应用(nginx ingress controller))
k8s学习--ingress详细解释与应用(nginx ingress controller))
543 0
|
4月前
|
监控 应用服务中间件 网络安全
部署Django应用:使用Gunicorn和Nginx构建高效的生产环境
部署Django应用:使用Gunicorn和Nginx构建高效的生产环境
277 0
|
6月前
|
关系型数据库 应用服务中间件 PHP
如何在 Ubuntu 16.04 上使用 Nginx 部署 Laravel 应用
如何在 Ubuntu 16.04 上使用 Nginx 部署 Laravel 应用
63 1
|
6月前
|
缓存 前端开发 Java
"揭秘!SpringBoot携手Nginx,性能飙升秘籍大公开:轻松掌握配置优化,让你的应用快如闪电!"
【8月更文挑战第11天】随着微服务架构的发展,SpringBoot成为构建RESTful API的首选,Nginx则作为高性能的反向代理服务器提升应用性能。本文将探讨两者如何协同工作,包括Nginx的负载均衡策略、静态资源缓存及数据压缩配置;同时讨论SpringBoot的线程池优化、缓存策略及性能监控。通过这些方法,帮助开发者显著提高系统的整体性能和可用性。
281 1
|
7月前
|
存储 缓存 前端开发
(三)Nginx一网打尽:动静分离、压缩、缓存、黑白名单、跨域、高可用、性能优化...想要的这都有!
早期的业务都是基于单体节点部署,由于前期访问流量不大,因此单体结构也可满足需求,但随着业务增长,流量也越来越大,那么最终单台服务器受到的访问压力也会逐步增高。时间一长,单台服务器性能无法跟上业务增长,就会造成线上频繁宕机的现象发生,最终导致系统瘫痪无法继续处理用户的请求。
209 1
|
6月前
|
JavaScript 网络协议 前端开发
如何在单个VPS上使用nginx、forever和crontab托管多个Node.js应用
如何在单个VPS上使用nginx、forever和crontab托管多个Node.js应用
48 0
|
6月前
|
应用服务中间件 Linux 网络安全
如何在 CentOS 6.5 上使用 Unicorn 和 Nginx 部署 Rails 应用
如何在 CentOS 6.5 上使用 Unicorn 和 Nginx 部署 Rails 应用
83 0
|
6月前
|
缓存 Ubuntu 应用服务中间件
如何在 Ubuntu 14.04 上使用 Passenger 和 Nginx 部署 Rails 应用
如何在 Ubuntu 14.04 上使用 Passenger 和 Nginx 部署 Rails 应用
43 0