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

相关推荐
技术小齐3 小时前
网络运维学习笔记 016网工初级(HCIA-Datacom与CCNA-EI)PPP点对点协议和PPPoE以太网上的点对点协议(此处只讲华为)
运维·网络·学习
ITPUB-微风3 小时前
Service Mesh在爱奇艺的落地实践:架构、运维与扩展
运维·架构·service_mesh
落幕3 小时前
C语言-进程
linux·运维·服务器
chenbin5204 小时前
Jenkins 自动构建Job
运维·jenkins
java 凯4 小时前
Jenkins插件管理切换国内源地址
运维·jenkins
AI服务老曹4 小时前
运用先进的智能算法和优化模型,进行科学合理调度的智慧园区开源了
运维·人工智能·安全·开源·音视频
sszdzq5 小时前
Docker
运维·docker·容器
book01215 小时前
MySql数据库运维学习笔记
运维·数据库·mysql
bugtraq20216 小时前
XiaoMi Mi5(gemini) 刷入Ubuntu Touch 16.04——安卓手机刷入Linux
linux·运维·ubuntu
xmweisi6 小时前
【华为】报文统计的技术NetStream
运维·服务器·网络·华为认证