文章目录
- 1. 正向代理和反向代理
- 1.1 正向代理概述
- 1.1.1 什么是正向代理
- 1.1.2 正向代理的作用
- 1.1.3 正向代理的基本格式
- 1.2 反向代理概述
- 1.2.1 什么是反向代理
- 1.2.2 反向代理可实现的功能
- 1.2.3 反向代理的可用模块
- 2. 配置反向代理
- 2.1 反向代理配置参数
- 2.1.1 proxy_pass
- 2.1.2 其他参数
- 3. 示例
- 3.1 反向代理单台web服务器
- 3.2 指定主机实现反向代理动静分离
- 3.3 缓存功能
- 3.4 实现反向代理客户端IP透传
- 3.4.1 基本原理
- 3.4.2 一级代理
- 3.4.3 多级代理
- 3.5 实现反向代理负载均衡
- 3.5.1 基本原理
- 3.5.2 常见配置参数
- 3.5.2 调度算法
- 3.5.2.1 轮询(Round Robin)
- 3.5.2.2 轮询权值(Weighted Round Robin)
- 3.5.2.3 ip_hash
- 3.5.2.4 fair(第三方)
- 3.5.2.5 url_hash(第三方)
- 3.5.2.6 least_conn(最小连接数)
- 3.5.2.7 最少响应时间(Least Time)
- 3.6 示例
- 3.6.1 使用轮询算法实现负载均衡
- 3.6.2 使用加权轮询算法实现负载均衡
1.1 正向代理概述
1.1.1 什么是正向代理
正向代理代理的是客户端
正向代理是一个位于客户端和目标服务器之间的代理服务器(中间服务器)。为了从目标服务器取得内容,客户端向代理服务器发送一个请求,并且指定目标服务器,之后代理向目标服务器转发请求,将获得的内容返回给客户端
1.1.2 正向代理的作用
- 为在防火墙内的局域网客户端提供访问Internet的途径
- 可以使用缓冲特性减少网络使用率
- 访问受地理位置限制的网络
- 使用代理后会隐藏真实的IP地址
1.1.3 正向代理的基本格式
1.2 反向代理概述
1.2.1 什么是反向代理
反向代理代理的是服务端
反向代理:(reverse proxy),指的是代理外网用户的请求到内部的指定的服务器,并将数据返回给用户的一种方式
客户端不直接与后端服务器进行通信,而是与反向代理服务器进行通信,隐藏了后端服务器的 IP 地址
1.2.2 反向代理可实现的功能
反向代理的主要作用是提供负载均衡和高可用性。
负载均衡:Nginx可以将传入的请求分发给多个后端服务器,以平衡服务器的负载,提高系统性能和可靠性。
缓存功能:Nginx可以缓存静态文件或动态页面,减轻服务器的负载,提高响应速度。
动静分离:将动态生成的内容(如 PHP、Python、Node.js 等)和静态资源(如 HTML、CSS、Javascript、图片、视频等)分别存放在不同的服务器或路径上。
多站点代理:Nginx可以代理多个域名或虚拟主机,将不同的请求转发到不同的后端服务器上,实现多个站点的共享端口。
1.2.3 反向代理的可用模块
2.1 反向代理配置参数
2.1.1 proxy_pass
2.1.2 其他参数
3.1 反向代理单台web服务器
客户机访问代理服务器
3.2 指定主机实现反向代理动静分离
3.3 缓存功能
反向代理可以缓存静态资源。
当客户端再次请求访问相同资源时,反向代理可以直接返回缓存中的响应,无需二次请求,减少对后端服务器的请求压力,并加快响应速度。
清理缓存
3.4 实现反向代理客户端IP透传
3.4.1 基本原理
反向代理客户端IP透传是指在使用反向代理服务器时,将客户端的真实IP地址传递给后端服务器。
这可以通过一些特定的 如 等HTTP 头字段来实现 头字段。
当请求经过反向代理服务器时,代理服务器会将客户端的真实IP地址添加到 XFF 头字段中,然后转发给后端服务器。
3.4.2 一级代理
3.4.3 多级代理
3.5 实现反向代理负载均衡
Nginx 可以基于模块提供服务器分组转发、权重分配、状态监测、调度算法等高级功能
3.5.1 基本原理
NGINX的负载均衡原理是基于反向代理和事件驱动的机制。
当客户端发送请求时,NGINX作为反向代理服务器接收请求,并根据配置的将请求转发到后端的多个服务器上,实现负载均衡。
3.5.2 常见配置参数
3.5.2 调度算法
3.5.2.1 轮询(Round Robin)
每个请求按时间顺序逐一分配到不同的后端服务,如果后端某台服务器死机,自动剔除故障系统,使用户访问不受影响。
3.5.2.2 轮询权值(Weighted Round Robin)
weight的值越大分配到的访问概率越高,主要用于后端每台服务器性能不均衡的情况下。或者仅仅为在主从的情况下设置不同的权值,达到合理有效的地利用主机资源。
指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。
3.5.2.3 ip_hash
每个请求按访问IP的哈希结果分配,使来自同一个IP的访客固定访问一台后端服务器,并且可以有效解决动态网页存在的session共享问题。
每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。
3.5.2.4 fair(第三方)
比 weight、ip_hash更加智能的负载均衡算法,fair算法可以根据页面大小和加载时间长短智能地进行负载均衡,也就是根据后端服务器的响应时间 来分配请求,响应时间短的优先分配。
Nginx本身不支持fair,如果需要这种调度算法,则必须安装模块。
按后端服务器的响应时间来分配请求,响应时间短的优先分配。
3.5.2.5 url_hash(第三方)
按访问的URL的哈希结果来分配请求,使每个URL定向到一台后端服务器,可以进一步提高后端缓存服务器的效率。
Nginx本身不支持url_hash,如果需要这种调度算法,则必须安装Nginx的hash软件包。
按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效。
3.5.2.6 least_conn(最小连接数)
根据后端服务器的连接状况进行分配客户请求,连接最少的服务器将被有限分配客户端请求。
以上就是本篇文章【Nginx详解 五:反向代理】的全部内容了,欢迎阅览 ! 文章地址:http://dfvalve.xrbh.cn/quote/6820.html 行业 资讯 企业新闻 行情 企业黄页 同类资讯 网站地图 返回首页 迅博思语资讯移动站 http://keant.xrbh.cn/ , 查看更多