Nginx+Tomcat的动静分离与负载均衡

目录

前言

一、案例

二、Nginx的高级用法

三、tomcat部署

四、Nginx部署

五、测试

总结



前言

通常情况下,一个 Tomcat 站点由于可能出现单点故障及无法应付过多客户复杂多样的请求等情况,不能单独应用于生产环境下,所以我们需要一套更可靠的解决方案。

Nginx 是一款非常优秀的 http 服务器软件,它能够支持高达 5000 个并发连接数的响应,拥有强大的静态资源处理能力,运行稳定,并且内存、CPU 等系统资源消耗非常低。

目前很多大型网站都应用 Nginx 服务器作为后端网站的反向代理及负载均衡器,来提升整个站点的负载并发能力。


一、案例

案例由 Nginx 作为负载均衡器,Tomcat 作为应用服务器的负载集群的设置方法。

Nginx服务器作为前端,Tomcat服务器作为后端,web页面请求由Nginx服务来进行转发,但不是把所有的web请求转发,而是静态页面请求Nginx服务器自己来处理,动态页面请求则转发给后端的Tomcat服务器来处理。(动态页面使用正则匹配jsp结尾的请求,使用proxy_pass转发给Tomcat服务器)

192.168.238.139

192.168.238.140

二、Nginx的高级用法

location

|------|------------------------------------------------------------------|
| = | 精确匹配 |
| ^~ | 不用正则的字符串匹配 |
| ~ | 正则匹配,且区分大小写 |
| ~* | 不区分大小写的正则匹配 |
| / | 任意匹配,无论如何都会满足匹配条件,后面不能有任意字符串(location匹配后的目录,当访问时访问url路径后的对应目录名称) |

rewirte

|------|-----------|
| 应用场景 | 进行前端的反向代理 |
| | 新旧域名的更替 |
| | 防盗链 |

|------|-------------------------|
| 书写位置 | server |
| | location |
| | if条件 |
| | 若要匹配后就停止向下匹配,加入break关键字 |

|--------|---------------------------------------------|
| 重写条目写法 | rewirte "^表达式" 重写路径(可以是本地的访问目录,也可以是远程的URL) |
| 返回状态码 | permanent,301 ;redirect,302 |

三、tomcat部署

192.168.238.140

安装两台tomcat为tomcat1和tomcat2

tar xf apache-tomcat-8.5.16.tar.gz

mv apache-tomcat-8.5.16 /usr/local/tomcat1

cp /usr/local/tomcat1 /usr/local/tomcat2

优化命令启动关闭命令

ln -s /usr/local/tomcat1/bin/startup.sh /usr/local/bin/tomcat1.up

ln -s /usr/local/tomcat1/bin/shutdown.sh /usr/local/bin/tomcat1.down

ln -s /usr/local/tomcat2/bin/startup.sh /usr/local/bin/tomcat2.up

ln -s /usr/local/tomcat2/bin/shutdown.sh /usr/local/bin/tomcat2.down

修改tomcat2的端口

分别编辑页面访问内容tomcat1和tomcat2(tomcat/webapps/ROOT/index.jsp)

启动服务 tomcat1.up tomcat2.up

四、Nginx部署

192.168.238.139

yum install -y epel-release

yum install -y nginx

vim /etc/nginx/nginx.conf在http和server中加入

echo OK > /usr/share/nginx/html/index.html

启动服务systemctl start Nginx

五、测试

用Nginx的IP地址进行动态页面访问

也可以在终端里curl

使用站点不存在的资源进行访问,查看报错信息对应的服务即可

拓展(感兴趣的小伙伴可以进行实验)

将此内容进行双击热备

再搭建一个同主用Nginx配置服务器一样配置的备用Nginx服务器,两者都安装keepalived,构成双击热备(注意优先级,vrrp实例名称,状态等内容)。在master宕机的情况下,slave将通过虚拟IP来接管master的工作。


总结

为了方便查看和以后部署Mysql,php服务不与Tomcat起冲突,进行了分开部署,也可以都部署在同一台机器上。重点在Nginx的高级location上,正则匹配和任意匹配的用法;upstream是将请求转发到后端。

相关推荐
丶213610 分钟前
【Nginx】在 Docker 上安装 Nginx 的详细指南
运维·nginx·docker
神即道 道法自然 如来26 分钟前
Jenkins怎么设置每日自动执行构建任务?
运维·jenkins
hanniuniu1340 分钟前
详细解读,F5服务器负载均衡的技术优势
运维·服务器·负载均衡
鱼饼6号1 小时前
Prometheus 上手指南
linux·运维·centos·prometheus
m0_609000423 小时前
向日葵好用吗?4款稳定的远程控制软件推荐。
运维·服务器·网络·人工智能·远程工作
骑鱼过海的猫1234 小时前
【tomcat】tomcat学习笔记
笔记·学习·tomcat
qmx_074 小时前
HTB-Jerry(tomcat war文件、msfvenom)
java·web安全·网络安全·tomcat
小安运维日记4 小时前
Linux云计算 |【第四阶段】NOSQL-DAY1
linux·运维·redis·sql·云计算·nosql
为风而战4 小时前
IIS+Ngnix+Tomcat 部署网站 用IIS实现反向代理
java·tomcat
m0_741768857 小时前
使用docker的小例子
运维·docker·容器