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.8developers.google.com
(海外)OpenDNS:208.67.222.222signup.opendns.com
(国内)114:114.114.114.114www.114dns.com
(国内)腾讯:119.29.29.29www.dnspod.cn
(国内)阿里:223.5.5.5alidns.com
(国内)百度:180.76.76.76dudns.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打开快速
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|

