Nginx反向代理、负载均衡、动静分离与集群搭建

一、Nginx

1、Nginx简介

Alt


2、安装前置依赖库
	yum install openssl-devel

	yum install pcre-devel

	yum install zlib-devel

3、安装Nginx
	wget http://nginx.org/download/nginx-1.16.1.tar.gz

	# 解压文件
	tar -zxvf nginx-1.16.1.tar.gz
	
	cd nginx-1.16.1.tar.gz
	# 进行编译并指定安装的位置
	./configure prefix=/usr/nginx
	# 安装
	make && make install

注意:Nginx的配置文件在/usr/nginx/conf目录下。


4、Nginx常用指令

       所有指令都需要在/usr/nginx/sbin目录下面。

① 启动Nginx

	./nginx

② 停止Nginx

	./nginx -s stop

③ 重新加载Nginx的配置

	./nginx -s reload




二、反向代理

1、正向代理和反向代理扫盲

① 正向代理

       假使用户出在局域网内,无法访问到某个网址,这时候客户端可以通过代理服务器来访问该网址,这其实就是正向代理其实。正向代理的代理服务器和要访问的网址对客户端都是可见的,也就是说客户端知道这次访问经过了代理。最常见的正向代理就是要访问某个网址时,可以在浏览器中设置对应的代理服务器。
Alt


② 反向代理

       反向代理本质就是客户端对代理是无感知的,客户端不需要进行任何配置,只要把请求发送到代理服务器,作为反向代理的服务器就会去目标服务器获取数据并返回给客户端。反向代理暴露给客户端的只是作为反代的服务器,会隐藏要访问真实服务器的IP。

Alt


2、开放端口
	# 查看防火墙的状态
	firewall-cmd --state

	# 列出防火墙的配置
	firewall-cmd --list-all

	# 开放出指定的端口
	firewall-cmd --add-service=http --permanent
	firewall-cmd --add-port=80/tcp --permanent
	
	# 重启防火墙
	firewall-cmd --reload

	# 关闭防火墙
	service firewalld stop

Alt


3、环境准备

       准备三个虚拟机,每个虚拟分别安装Nginx和Tomcat。

Alt


4、修改配置

       ① 我这里是将静态IP为192.168.255.200的机器作为反向代理的服务器,修改nginx.conf如下(行末记得加上分号):

Alt

       ② 并且在192.168.255.201这台机器的Tomcat上面发布了m2目录,下面包含一个a.html的文件,文件内容如下:

	<span>192.168.255.201</span>

       ③ 在192.168.255.202这台机器的Tomcat上面发布了m3目录,下面也包含一个a.html的文件,文件内容如下:

	<span>192.168.255.202</span>

       上面配置的意思就是,本台服务器(192.168.255.200)监听到8080端口的请求路径中包含m2(正则匹配)时候,立即将请求转发到192.168.255.201的8080端口上;如果请求路径中包含m3,立即将请求转发到192.168.255.202的8080端口上。


location指令说明:
       =:请求字符串与uri严格匹配,如果匹配成功就停止向下搜索并处理该请求。
       ~:表示uri包含正则表达式,并且区分大小写。
       ~*:表示uri包含正则表达式,不区分大小写。

5、结果

Alt              Alt




三、负载均衡

       负载均衡即是将负载分摊到不同的服务单元,既保证服务的可用性,又保证响应足够快,给用户很好的体验。


1、Nginx的负载均衡策略

① 轮询
       每个请求按时间顺序逐一分配到不同的后端服务器,即使后端服务器宕机了,也能自动剔除。

② 权重
       为每个后端服务器指定权重的参数,参数越大访问几率越高。

③ IP哈希
       每个请求按照访问IP的hash结果分配,故每个访客都会固定访问一个后端服务器,可以解决session的问题。

④ fair(第三方)
       按照后端服务器的响应时间来分配请求,响应时间短的优先分配。


2、修改配置

       将反代时候部署Tomcat的两台机器的m2、m3目录都重命名为m。

       修改192.168.255.200机器上的nginx.conf如下所示:

	http {
		...
		upstream 自定义的名字 {
			server 192.168.255.201:8080 weight=4;
			server 192.168.255.202:8080 weight=1;
		}
		server {
			listen 8080;
			server_name 192.168.255.200;
			
			# 正则表达式匹配uri中包含m就进行负载均衡的转发
			location ~ /m {
				proxy_pass http://自定义的名字;
				proxy_connect_timeout 10;
			}
		}

		...
	}




四、动静分离

1、动静分离说明

       动静分离本质就是根据请求的是静态资源还是动态资源来进行不同的转发,如果请求的是动态资源,直接转发到Tomcat上,请求的是静态资源的话,转发到静态资源服务器。所以,这里是基于如下前提的:必须事先规定好静态资源和动态资源请求的路径规则。
Alt


2、修改配置

       这里演示的是Nginx既充当HTTP服务器,又充当静态资源服务器。

       首先以正则表达式区分是动态请求还是静态请求,下面框出来的演示的是静态请求,会直接从该静态服务器上拉取资源,此时root中不能带斜杠

Alt
       动态请求无非是先正则表达式匹配,匹配到后通过配置的proxy_pass属性转发到对应的Tomcat上。

Alt




五、集群搭建

1、架构图

       提供一个虚拟IP作为Nginx集群的访问入口。
Alt


2、搭建集群

       ① 集群中每个Nginx服务器都要安装keepalived,使用下面指令进行在线安装。

	yum install keepalived -y

       ② 每个服务器都要改配置!修改/etc/keepalived/keepalived.conf文件,修改如下:

Alt

Alt


       ③ 将脚本放到配置文件中写的路径下。脚本获取链接,提取码:1oy9


       ④ 使用下面脚本启动集群。

	# 启动nginx
	/usr/nginx/sbin/nginx

	# 启动keepalived
	systemctl start keepalived.service

3、结果

       location里面没设置expire属性,竟然也会缓存。。。反正集群应该是搭建成功了。
Alt

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值