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环境下。

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。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值