Nginx使用学习之正向代理、反向代理、负载均衡(配置实例详解)

发布时间:2024年01月06日

1.正向代理介绍

Nginx 不仅可以做反向代理,实现负载均衡。还能用作正向代理来进行上网等功能。正向代理:如果把局域网外的 Internet 想象成一个巨大的资源库,则局域网中的客户端要访 问 Internet,则需要通过代理服务器来访问,这种代理服务就称为正向代理。

在这里插入图片描述

2.反向代理介绍

反向代理,其实客户端对代理是无感知的,因为客户端不需要任何配置就可以访问。
我们只需要将请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据后,在返 回给客户端,此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器 地址,隐藏了真实服务器 IP 地址。

在这里插入图片描述

3.Nginx反向代理配置实例

3.1实现效果

打开浏览器,在浏览器地址栏输入地址 www.123.com,跳转到 liunx 系统 tomcat 主页面中。

3.2准备工作

(1)查看端口

Linux 系统安装 Tomcat,使用默认端口8080,在conf目录下的server.xml配置文件中,如下,将port改为808

<Connector port="8080" protocol="HTTP/1.1"
 connectionTimeout="20000"
 redirectPort="8443" />

Tomcat 安装文件放到 Linux系统中,解压。
Tomcat的路径:/usr/feng/apach-tomcat/tomcat8081下
进入 tomcat 的 bin 目录中,./startup.sh 启动 tomcat 服务器。

(2)对外开放访问端口(根据自身需求)

firewall-cmd --add-port=8080/tcp --permanent
firewall-cmd –reload
firewall-cmd --list-all # 查看已经开放的端口号

(3)在 Windows 系统中通过浏览器访问 Tomcat 服务器

在bin目录下开启Tomcat,使用命令

./startup.sh

在这里插入图片描述

3.3访问过程分析

在这里插入图片描述

4.具体配置

4.1Windows系统配置

Windows系统的Host文件进行域名和ip对应关系的配置
在这里插入图片描述
添加内容到Host文件中

192.168.230.130 www.123.com

4.2在Nginx上进行请求转发配置(反向代理配置)

server {
	listen			80;
	server_name		192.168.230.130;

	#charset koi8-r;

	#access_log  logs/host.access.log main;

	location / {
		root	html;
		proxy_pass	http://127.0.0.1:80880
		index index.html index.html

5.最终测试

如上配置,监听80端口,访问域名为www.123.com,不加端口号时默认80端口,所以访问该域名时会跳转到127.0.0.1:8080路径上,所以在浏览器上输入www.123.com,即可

6.负载均衡

1.增加服务器的数量,然后将请求分发到各个服务器上,将原先请求集中到单个服务器上的 情况改为将请求分发到多个服务器上,将负载分发到不同的服务器,也就是我们所说的负 载均衡
2.客户端发送多个请求到服务器,服务器处理请求,有一些可能要与数据库进行交互,服 务器处理完毕后,再将结果返回给客户端。
3.这种架构模式对于早期的系统相对单一,并发请求相对较少的情况下是比较适合的,成 本也低。但是随着信息数量的不断增长,访问量和数据量的飞速增长,以及系统业务的复杂 度增加,这种架构会造成服务器相应客户端的请求日益缓慢,并发量特别大的时候,还容易 造成服务器直接崩溃。很明显这是由于服务器性能的瓶颈造成的问题,那么如何解决这种情 况呢?
4.我们首先想到的可能是升级服务器的配置,比如提高 CPU 执行频率,加大内存等提高机 器的物理性能来解决此问题,但是我们知道摩尔定律的日益失效,硬件的性能提升已经不能 满足日益提升的需求了。最明显的一个例子,天猫双十一当天,某个热销商品的瞬时访问量 是极其庞大的,那么类似上面的系统架构,将机器都增加到现有的顶级物理配置,都是不能 够满足需求的。那么怎么办呢?上面的分析我们去掉了增加服务器物理配置来解决问题的办法,也就是说纵向解决问题 的办法行不通了,那么横向增加服务器的数量呢?这时候集群的概念产生了,单个服务器解 决不了,我们增加服务器的数量,然后将请求分发到各个服务器上,将原先请求集中到单个服务器上的情况改为将请求分发到多个服务器上,将负载分发到不同的服务器,也就是我们 所说的负载均衡

在这里插入图片描述
在这里插入图片描述

6.1.1实现效果

在浏览器地址栏输入http://208.208.128.122/deu/a.html,实现负载均衡效果,平均在80218082端口中

6.2准备工作

6.2.1准备两台Tomcat服务器,一台8081,一台8082

按照上面的反向代理配置,但需要添加东西,如下:

6.2.2 修改一处

在两台Tomcat里面webapps目录中,创建名称是edu的文件夹,在文件夹中创建页面a.html,用于测试。
分别配置8081和8082,在vod文件下使用命令:

cp a.html ../edu/
cd ../edu/ # 进入到edu目录下
cat a.html # 查看内容

6.2.3 测试URL

http://208.208.128.122:8081 / 8082/edu/a.html

在这里插入图片描述
在这里插入图片描述

6.3 在Nginx配置文件中进行负载均衡配置

upstream myserver {
	server 208.208.128.122:8081;
	server 208.208.128.122:8082;
}
server {
	listen		80;
	server_name 208.208.128.122;

	#charser koi8-r;
	
	#access_log logs/host.access.log main;

	location / {
		root	html;
		proxy_pass	http://myserver; #重点
		#proxy_pass	http://127.0.0.1:8081;
		index	index.html	index.htm;

8082同理

6.4最终测试URL

https://208.208.128.122/edu/a.html

在这里插入图片描述

7.Nginx 分配服务器策略

随着互联网信息的爆炸性增长,负载均衡(load balance)已经不再是一个很陌生的话题, 顾名思义,负载均衡即是将负载分摊到不同的服务单元,既保证服务的可用性,又保证响应 足够快,给用户很好的体验。快速增长的访问量和数据流量催生了各式各样的负载均衡产品, 很多专业的负载均衡硬件提供了很好的功能,但却价格不菲,这使得负载均衡软件大受欢迎, nginx 就是其中的一个,在 linux 下有 Nginx、LVS、Haproxy 等等服务可以提供负载均衡服 务,而且 Nginx 提供了几种分配方式(策略)

7.1 轮询(默认)

每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器 down 掉,能自动剔除。

7.2weight

weight代表权重,默认1,权重越高被分配的客户端越多

 upstream myserver {
 server 208.208.128.122:8081 weight=10; 
 server 208.208.128.122:8082 weight=10;
 }
 server {
 listen 80;
 server_name 208.208.128.122;
 location / {
 root html;
 proxy_pass http://myserver;
 index index.html index.htm;
 }

7.3ip_hash

ip_hash 每个请求按访问iphash 结果分配,这样每个访客固定访问一个后端服务器

 upstream myserver {
 	ip_hash;							
 server 208.208.128.122:8081 ;
 server 208.208.128.122:8082 ;
 }
 server {
 listen 80;
 server_name 208.208.128.122;
 location / {
 root html;
 proxy_pass http://myserver;
 index index.html index.htm;
 }

7.4fair(第三方)

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

 upstream myserver {					
 server 208.208.128.122:8081 ;
 server 208.208.128.122:8082 ;
 fair; 														
 }
 server {
 listen 80;
 server_name 208.208.128.122;
 location / {
 root html;
 proxy_pass http://myserver;
 index index.html index.htm;
 }
文章来源:https://blog.csdn.net/apple_51319648/article/details/135405194
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。