Docker搭建Nginx反向代理多个Tomcat

在容器化技术盛行的现在,掌握使用Docker部署项目已是必须技能,接下来记录一次使用Docker搭建Nginx并反向代理到多个Tomcat,在开始刚之前,先来补充一些关于Nginx的理论知识。(在此之前需要基础掌握Docker)

关于Nginx

我们通常使用Nginx来反向代理我们的静态资源和各种web服务,当然它也具有邮件服务等功能,不过那部分本人少用,在这里就不做阐述。

配置文件解析:

nginx.conf主要分为3大模块:配置块,events块,http块(server块),其中http块是我们经常需要配置的地方。

worker_process:设置worker的数量,一个woker使用一个进程,由于nginx和redis都是使用了io多路复用的原则,这里最好设置为和CPU相同的数量,ps:如果是在windows下,则没有效果,所以nginx和redis最好是部署在Linux环境下。

Docker搭建Nginx反向代理多个Tomcat插图

worker_connection:最大连接数量。一个http请求可能会有2个或者4个连接。如果是静态资源,就是两个连接,如果是动态,则会有4个连接。

问题延伸:nginx支持的最大并发数:如果是静态资源,最大并发数=worker_process*worker_connetction/2;如果是动态,最大并发数=worker_process*worker_connetction/4

1.反向代理

通过Nginx可以反向带来到我们的web服务。

2.负载均衡

2.1 Nginx分配服务器的策略

①轮询(默认):每个请求按时间顺讯逐一分配到不同的后端服务器,如果后端服务器宕掉,可以自动剔除。

②weight(权重):默认的权重为1,权重越高的服务端被分配的请求越多。相当于指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。

upsrteam myserver { server 127.0.0.1:8081 weight=1; server 127.0.0.1:8082 weight=2; }

③ip_hash:每个请求按访问ip的hash结果分配,保证每个客户端固定访问一个后端服务器,可以解决session的问题。

upsrteam myserver { ip_hash; server 127.0.0.1:8081 ; server 127.0.0.1:8082 ; }

④fair(第三方):按后端服务器的响应时间来分配请求,响应时间短的优先。

upsrteam myserver { server 127.0.0.1:8081; server 127.0.0.1:8082; fair; }

⑤url_hash(第三方):按访问url的hash值来分配请求,保证相同的请求都是请求的同一台服务器,一般用于缓存服务器。

upsrteam myserver { server 127.0.0.1:8081; server 127.0.0.1:8082; hash $request_uri; hash_method crc32; }

3.动静分离

使用Nginx来实现动静分离不是单纯把动态页面和静态页面进行物理分离,而是把动态请求和静态请求分开,可以理解为使用Nginx处理静态页面,Tomcat处理动态页面。

目前主流的两种动静分离方案有两种:

①纯粹把静态文件独立成单独的域名,放在服务器上,这也是主流推荐的方案。

②动态和静态文件混合在一起发布,通过nginx来分开。

通过location指定不同的后缀名实现不同的请求转发。通过expires参数设置,可以是浏览器缓存过期时间,减少与服务器之间的请求。具体expires定义:给一个资源设定一个过期时间,该时间内对该资源的请求不用去服务器重新下载,只需要在浏览器确认过期时间即可,推荐设置为3d,也就是3天,3天内对该资源的请求,会发送请求比对服务器文件最后更新时间有没有变化,没有变化则返回304,代表该资源来自浏览器缓存,有修改则返回200,从服务器下载。

location /image/ { root /data/; #静态图片资源所在的上级目录,例如 /data/image/1.jpg autoindex on; #可以看到文件目录 expires 3d; #使用浏览器缓存3天 }

4.高可用集群

场景:只有一个Nginx,并且该服务器宕机了,导致全部服务器不可用。使用nginx+keepalived。

原文链接:https://blog.csdn.net/huanglifu520/article/details/105280772

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享