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是将请求转发到后端。

相关推荐
一坨阿亮1 小时前
Linux 使用中的问题
linux·运维
wclass-zhengge3 小时前
Docker篇(Docker Compose)
运维·docker·容器
尢词3 小时前
SpringMVC
java·spring·java-ee·tomcat·maven
清风百草3 小时前
【04】【Maven项目热部署】将Maven项目热部署到远程tomcat服务器上
tomcat·maven项目热部署
李启柱3 小时前
项目开发流程规范文档
运维·软件构建·个人开发·设计规范
力姆泰克4 小时前
看电动缸是如何提高农机的自动化水平
大数据·运维·服务器·数据库·人工智能·自动化·1024程序员节
BPM_宏天低代码4 小时前
低代码 BPA:简化业务流程自动化的新趋势
运维·低代码·自动化
sun0077005 小时前
拷贝 cp -rdp 和 cp -a
linux·运维·服务器
wowocpp5 小时前
ubuntu 22.04 server 安装 anaconda3
linux·运维·ubuntu
tingting01196 小时前
Linux 普通用户禁用sudo su - 命令
linux·运维·服务器