nginx--正向代理、反向代理及负载均衡(图解+配置)
来源:http://www.tudoupe.com时间:2022-07-29
目录
- 学习背景
- 一、代理服务
- 二、正向代理
- 什么是直接代理人?
- 1.2如何实现nginx直接代理?
- 1.3客户访问(核实直接代理)
- 二、反向代理
- 反向剂是什么?
- 2.2 nginx实现反向代理
- 三、负载均衡
- 负荷平衡是什么?
- 3.2什么是负荷平衡算法?
学习背景
什么是nginx?
【百度百科】
Nginx(engine x)是一个高性能HTTP和逆代理网络服务器..
除了反向代理
,nginx还支持正向代理
、负载均衡
和基于SSL的安全证书HTTPS
访问等功能特性~
本文主要是介绍是如何配置 tanginx正因子、逆因子和负荷平衡
,进入正文~
一、代理服务
什么是代理人?
代理又分为正向代理
和反向代理
。
二、正向代理
什么是直接代理人?
先来看张图~
【再举个栗子】
某同学喜欢
面向搜索引擎编程
,想通过 百度 搜索引擎查找一些学习资料,但是有些网站直接访问可能不太安全,会暴露自己的IP,同学比较苦恼,想着怎样才能使用 百度 搜索自己想要的学习资料,又不会暴露自己的IP
在网站上呢?
然后我告诉同班同学,我刚拿到了一只代理服务器
,这台代理服务器
通过nginx配置转发代理http
和https
请求,你呢,只需要在自己的Windows本地电脑的网关配置一下这台代理服务器的IP和端口号,就能正常通过代理服务器访问到 百度 并搜索相关的学习资料了,你不会泄露你的真正的IP
~
同学们很兴奋地说他们已经知道了Ninx,但是代理人会怎么做呢?
直接代理是指通过
代理服务器
代理浏览器/客户端
去重定向请求访问到目标服务器
的一种代理服务。
直接代理服务的特点是:代理服务器
代理的对象是浏览器/客户端
,也就是对于目标服务器
来说浏览器/客户端
是隐藏的。
同学觉得这有点有趣,于是他们又问了一遍,猪笼草怎么会意识到直接代理?
1.2如何实现nginx直接代理?
(一)直接向代理人转发 https 指令
在实现Xinx代理之前,让我们首先解释一下今天的网站基本上是https
因此,为了实现 nginx转发代理请求,您需要配置转发http80
端口请求和配置https443
端口的请求~
正向代理转发http
请求很简单,但正在转交给代理人https
请求有点问题,大部分在线教程配置如下(我不知道他们是否已经验证了..).):
一开始,我也像上面一样配置了,不过http
请求是正常发送的,但它被发现https
这不是逆转,而是报复HTTP/1.1 400 Bad Request
~
后来才得知辛克斯的官员不支持直接转移https
请求,但阿里的一个大伙子扩大了ngx_http_proxy_connect_module
模块,并且在github
https://github.com/chobits/ngx_http_proxy_connect_module
不过维护的ngx_http_proxy_connect_module
该模块的补丁也仅限于nginx版本(目前正在维护)1.4.x~1.19.x
版本),如README.md
说明:
如果你没有安装的 nginx版本1.4.x~1.19.x
在这一范围内,不能支持向正确的代理人转达https
请求。
(2)安装nginx
如果你已经安装了nginx(可以跳过),这里是1.9.2
版本为例,使用root
用户进行安装:
在这里安装nginxinstall
编译后编译安装的默认安装目录是/usr/local/nginx
,后续配置新模块ngx_http_proxy_connect_module
还需要重新install
编译一次~
(3)下载新模块
GitHub上下载ngx_http_proxy_connect_module
的zip
压缩包源码:
https://github.com/chobits/ngx_http_proxy_connect_module
(4)解压缩新的模块源
将新模块ngx_http_proxy_connect_module
向服务器上传源压缩包/usr/nginx
目录,解压缩和重命名
(五)将新模块添加到nginx
使用root
用户访问了nginx资源目录/usr/nginx/nginx-1.9.2
将一个新模块添加到nginxngx_http_proxy_connect_module
和并重新编译nginx
–说明:
这里nginx-1.9.2
版本对应proxy_connect.patch
其他版本的补丁和相关补丁的详细信息请参阅GitHub ~ https://github.com/chobits/ngx_http_proxy_connect_module
使用root
用户安装并编译新模块后,如果您不想以后使用它root
用户操作,授权安装目录/usr/local/nginx
给nginx
用户或其他普通用户~
–说明:
二进制/usr/local/nginx/sbin/nginx
文件需要重新归属为root
用户,并添加权限s
权限(权限位+s
二进制文件属于管道文件,即普通用户也可以执行二进制文件,执行后生成的过程属于该文件的授权拥有者,这里是该文件的拥有者root
)
(6)修改nginx的配置
Modifynginx配置单独添加http
和https
的server
其他配置仍未更改~
这两个server
主要配置是对DNS解析
和代理人
进行:
– DNS说明:
( 国内和国际 ) 目前主导的DNS:
(国外)谷歌:8.8.8.8
developers.google.com
(海外)OpenDNS:208.67.222.222
signup.opendns.com
(国内)114:114.114.114.114
www.114dns.com
(国内)腾讯:119.29.29.29
www.dnspod.cn
(国内)阿里:223.5.5.5
alidns.com
(国内)百度:180.76.76.76
dudns.baidu.com
(7)检查并更新ginx配置
1.3客户访问(核实直接代理)
客户端向代理访问目标站点实例对象:
http://www.baidu.com
和https://www.baidu.com
(1)客户端-Windows浏览器访问
首先,在本地计算机的IE浏览器上设置代理服务器和端口:
IE->右上角 ->工具 ->Internet选项->连接->局域网(LAN)设置 ->配置代理IP和端口
浏览器访问
http://ww.Baidu.com/和 https://ww.Baidu.com/
实时查看nginx日志
通过 nginx访问日志的实时视图,您可以看到所有由本地计算机访问的网页在您在Windows下设置代理IP和端口后将获得访问代理服务器
访问网页,实现转递代理的功能,以及隐藏用户自己的真实IP
~
(2)客户端-Linux代理访问
它也可以在Linux下验证代理服务器
是否能正常代理转发http
和https
请求~
nginx转运代理https
成功:
二、反向代理
反向剂是什么?
先来一张图了解下~
与正因子相比,逆因子定义如下:
反向代理,指的是
浏览器/客户端
不知道你要去哪家目标服务器
,只知道去访问代理服务器
,代理服务器
再通过反向代理 + 负荷平衡
实现请求分发到应用服务器
的一种代理服务。
反向代理服务的特点是:代理服务器
代理的对象是应用服务器
,也就是对于浏览器/客户端
来说应用服务器
是隐藏的。
2.2 nginx实现反向代理
(一)修改 thenginx 配置
修改nginx配置vi /usr/local/nginx/conf/nginx.conf
在http
模块中配置如下:
通过结合负荷平衡来实现 nginx 逆变剂,直接提供在这里反向代理+负载均衡
的配置,负载均衡
后一章节介绍~
(二)检查并更新ginx配置
(3)浏览器访问
代理服务器部署了Tomcat应用程序,以访问Tomcat静态页面验证波~
http://agentserverIP:8080/appname/ReverseProxy1.html
三、负载均衡
负荷平衡是什么?
让我们看看这张反转剂的照片。
可以看到负载均衡(Load Balance)
的主要作用是采用了负载均衡算法
将请求分发到集群模式
中的应用服务器
甚至在舞台后面应用服务器
挂了,其他应用服务器
它也可以正常接收请求并实现高可用
在集群模式下支持应用程序服务器纵向扩展
能够适应企业快速增长高并发
应用场景~
3.2什么是负荷平衡算法?
负载均衡算法
常用的有轮询
、权重
和ip_hash
算法,默认是轮询
算法~
(1)基于轮询
的算法
原则是每个请求按时间顺序分配给不同的应用程序服务器,如果接收请求的应用程序服务器被暂停,并且请求超过最大失败数max_fails
(1次),然后在届满时fail_timeout
在10秒内不会再向节点发送任何请求~
(2)基于权重
的算法
原则是每个请求按重量分配给不同的应用程序服务器,就像接收请求的应用程序服务器被暂停,请求超过了最大失败数max_fails
(默认为1或设置为N次),然后在失败时fail_timeout
在10秒内(默认设置为N秒),请求不会被发送到节点~
(3)基于ip_hash
的算法
该算法的原理是,每个请求按照用户访问IP的 Hash 结果分配,如果请求来自同一用户 IP,则 IP 被固定以访问应用程序服务器,该算法可以有效地解决动态网页的会话共享问题。
一般使用的是基于权重
因为现在很多情况下集群部署
并且大多数服务器资源在集群下均不均匀。较高的资源具有较高的分配权重,较低的资源具有较低的分配权重。这是基于权重
负荷平衡算法能更有效地利用资源,提高并行处理能力~
独创并不容易,但我认为这是好朋友。一键三连(点赞+收藏+评论 )
走起~
下一篇:cnpm安装步骤
相关新闻
- 2022-08-04 WPF的由来
- 2022-08-04 Win11勒索软件防护怎么打开?Win11安
- 2022-08-04 Windows系统jdk的配置
- 2022-08-04 Windows10 OneNote怎么重新登录?如何重
- 2022-08-04 超好用的 Windows 效率工具推荐
- 2022-08-04 Windows如何在CMD或PowerShell中配置代理
- 2022-08-04 powershell和cmd对比
- 2022-08-04 【QT】Windows下QT下载安装
- 2022-08-04 windows下 C++ 实现类属性的get和set方
- 2022-08-04 Win11快速助手在哪里?Win11打开快速
|
|
|
|
|
|
|
|
|
|