搭建nginx反向代理实现动静态分离
- 一、实现高可用动静分离
- 二 实验步骤
- 2.1 安装nginx和开启路由转发
- 2.2 实现lvs负载均衡
- 2.3 实现动态网页功能
- 2.4 实现nginx反向代理
- 2.5 重启服务网页查看
一、实现高可用动静分离
1、部署目的
①用户访问业务时访问虚拟ip由lvs负责转发请求到业务上,采用轮询调度算法。
②用户访问虚拟ip为静态业务时lvs将业务转到nginx上处理。
③用户访问虚拟ip为动态业务时lvs将业务转到nginx上由nginx反向代理转给tomcat处理,采用轮询调度算法
二 实验步骤
2.1 安装nginx和开启路由转发
nginx01、nginx02操作:
systemctl stop firewalld
sentenforce 0
#关闭防火墙及selinux安全验证
yum install epel-release -y
yum install nginx -y
systemctl start nginx
#安装epel扩展源,然后安装nginx并启动
echo nginx1 ck >/usr/share/nginx/html/index.html
echo nginx2 boa >/usr/share/nginx/html/index.html
#修改nginx主页内容,nginx01修改为nginx01 test,nginx02修改nginx02 test
curl 192.168.10.10
curl 192.168.10.20
#分别在俩台主机测试能否互相访问到定义的静态内容
ifconfig ens33:1 192.168.10.100 netmask 255.255.255.0
#2台nginx添加虚拟网卡lo:0并配置ip
route add -host 192.168.10.100 dev ens33:1
#添加路由192.168.30.100走ens33:1网卡
vim /etc/sysctl.conf
#编辑内核参数,添加内容
![请添加图片描述](https://img-blog.csdnimg.cn/5f5ce4ba7e484cdba7390513258e9914.png)
#保存退出后查看配置
sysctl -p
#查看内核参数是否配置完成
2.2 实现lvs负载均衡
lvs-master、lvs-slave执行:
yum install ipvsadm -y
#yum安装ipvsadm服务,即LVS负载均衡的真实服务名
systemctl start ipvsadm.service
#开启ipvsadm服务,此步骤启动服务报错
systemctl status ipvsadm.service>1.txt
cat 1.txt
#将ipvsadm服务启动报错提示导给1.txt文件并查看。内容如下截图
ipvsadm-save>/etc/sysconfig/ipvsadm
#报错信息提示是没有/etc/sysconfig/ipvsadm文件,解决方法是将ipvsadm保存到/etc/sysconfig/ipvsadm文件下。
systemctl restart ipvsadm.service
#重新启动ipvsadm成功
yum install keepalived.x86_64 -y
#安装keepalived.x86_64
vim /etc/sysctl.conf
#编辑内核文件
添加内容:
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0
#保存退出
sysctl -p
#查看添加内核内容有则成功
vim keepalived.conf
#编辑配置文件
修改内容:
global_defs模块中
smtp_server 127.0.0.1
#改为127.0.0.1即改为本机
router_id LVS_01
#第一条LVS名称改为LVS_01
#vrrp_skip_check_adv_addr
#vrrp_strict
#vrrp_garp_interval 0
#vrrp_gna_interval 0
#以上4行安全机制添加#号注释掉
vrrp_instance VI_1 {
state MASTER #主是master,网卡类型是ens33
interface ens33
}
virtual_ipaddress {
192.168.10.100
}
#虚拟主机地址改为要配置的虚拟ip,可配置多个,若只写一个将模板的其他2个删除。
virtual_server 192.168.10.100 80 {
#虚拟ip地址改为配置的虚拟ip和web服务端口号
delay_loop 6
lb_algo rr
lb_kind DR
#模式改为DR模式即直连模式
persistence_timeout 50
protocol TCP
real_server 192.168.10.10 80 {
#第一台真实ip地址和web服务端口号
weight 1
TCP_CHECK {
#添加TCP_check 注意分号前有空格,检测真实服务器健康状态,即检测后端服务器80端口,若不正常则访问其他台服务器
connect_port 80
#添加连接端口80
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
real_server 192.168.10.20 80 {
#第二台真实ip地址和web服务端口号
weight 1
TCP_CHECK {
#添加TCP_check 注意分号前有空格,检测真实服务器健康状态,即检测后端服务器80端口,若不正常则访问其他台服务器
connect_port 80
#添加连接端口80
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
#俩台真实服务器后的所有内容删除即可,修改完成后保存退出。完整配置文件如下图
scp keepalived.conf 192.168.10.20:/etc/keepalived/
LVS_02配置文件修改:
#将配置好的配置文件传到LVS_02服务器上
#第一步修改 router_id LVS_02 名称改为LVS_02
#第二步要修改vrrp_instance VI_1模块中的state为BACKUP,和priority 90改为比主LVS优先级低的等级
#其他不用修改保存即可
systemctl restart ipvsadm keepalived
#重启服务
ipvsadm -ln
2.3 实现动态网页功能
tomcat01、tomcat02执行:
yum install tomcat -y
systemcat start tomcat
#安装并启动tomcat服务
cd /var/lib/tomcat/webapps
mkdir test
![请添加图片描述](https://img-blog.csdnimg.cn/e2c194bacae84f1f87b87423d73ea90c.png)
添加动态页面内容:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<head>
<title>test</title>
</head>
<body>
<% out.println("动态页面:test tomcat01");%>
#页面输出内容为test tomcat01,tomcat02服务器上则将01改为02方便查看实验效果
</body>
</html>
#创建动态资源页面
vim /etc/tomcat/server.xml
#修改主配置文件内容约125行到129行,原有内容不需要更改,对比此段内容添加即可,如下截图中,原本下面几行的host要删除![请添加图片描述](https://img-blog.csdnimg.cn/25f94d78a88941ea8baaa6397c2c649d.png)
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true"
xmlNamespaceAware="false">
<Context docBase="/var/lib/tomcat/webapps/test"
path="" reloadable="true" />
#指定自己的tomcat页面访问文件路径
systemctl restart tomcat
#重启服务在本机分别输入192.168.10.10:8080和192.168.10.20:8080测试能否访问到内容
2.4 实现nginx反向代理
nginx01、nginx02执行:
vim /etc/nginx/conf.d/upstream.conf
#直接在nginx子配置文件夹中创建一个新的子配置文件,因为是yum安装无须在主配置文件中指定子配置文件
文件内容:
upstream nginxtest{
server 192.168.10.10:8080;
server 192.168.10.20:8080;
}
#反向代理模块,将2个tomcat的ip和端口号写入其中,反代模块名称为nginxtest
server {
location / {
root html;
index index.html index.htm;
}
#server模块中的第一个location模块,指定了根为html,支持主页文件类型三个,注意分号结尾
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|css)$ {
root /usr/share/nginx/html;
}
#server模块中第二个location模块,配置不区分大小写的任意开头只要以.()括号内的任意一个内容结尾则为静态资源访问/usr/share/nginx/html下的页面
location ~ .*\.jsp$ {
proxy_pass http://nginxtest;
proxy_set_header HOST $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
#server模块中第三个location模块,配置不区分大小写的任意开头只要.jsp结尾就由nginx反向代理模块nginxtest进行处理
}
2.5 重启服务网页查看
systemctl restart nginx
systemctl restart tomcat