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

一、Nginx

1、Nginx简介

Nginx反向代理、负载均衡、动静分离与集群搭建_第1张图片


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、正向代理和反向代理扫盲

① 正向代理

       假使用户出在局域网内,无法访问到某个网址,这时候客户端可以通过代理服务器来访问该网址,这其实就是正向代理其实。正向代理的代理服务器和要访问的网址对客户端都是可见的,也就是说客户端知道这次访问经过了代理。最常见的正向代理就是要访问某个网址时,可以在浏览器中设置对应的代理服务器。
Nginx反向代理、负载均衡、动静分离与集群搭建_第2张图片


② 反向代理

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

Nginx反向代理、负载均衡、动静分离与集群搭建_第3张图片


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

Nginx反向代理、负载均衡、动静分离与集群搭建_第4张图片


3、环境准备

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

Nginx反向代理、负载均衡、动静分离与集群搭建_第5张图片


4、修改配置

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

Nginx反向代理、负载均衡、动静分离与集群搭建_第6张图片

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

	<span>192.168.255.201span>

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

	<span>192.168.255.202span>

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


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

5、结果

Nginx反向代理、负载均衡、动静分离与集群搭建_第7张图片              Nginx反向代理、负载均衡、动静分离与集群搭建_第8张图片




三、负载均衡

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


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上,请求的是静态资源的话,转发到静态资源服务器。所以,这里是基于如下前提的:必须事先规定好静态资源和动态资源请求的路径规则。
Nginx反向代理、负载均衡、动静分离与集群搭建_第9张图片


2、修改配置

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

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

Nginx反向代理、负载均衡、动静分离与集群搭建_第10张图片
       动态请求无非是先正则表达式匹配,匹配到后通过配置的proxy_pass属性转发到对应的Tomcat上。

Nginx反向代理、负载均衡、动静分离与集群搭建_第11张图片




五、集群搭建

1、架构图

       提供一个虚拟IP作为Nginx集群的访问入口。
Nginx反向代理、负载均衡、动静分离与集群搭建_第12张图片


2、搭建集群

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

	yum install keepalived -y

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

Nginx反向代理、负载均衡、动静分离与集群搭建_第13张图片

Nginx反向代理、负载均衡、动静分离与集群搭建_第14张图片


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


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

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

	# 启动keepalived
	systemctl start keepalived.service

3、结果

       location里面没设置expire属性,竟然也会缓存。。。反正集群应该是搭建成功了。
Nginx反向代理、负载均衡、动静分离与集群搭建_第15张图片

你可能感兴趣的:(中间件,nginx,linux)