3、正反向代理与负载均衡
3.1正向代理(Forward Proxy)
工作原理:
1、正向代理位于客户端和原始服务器之间,为客户端发送请求到目标服务器进行代理。客户端不直接访问目标服务器,而是通过正向代理来访问。
2、客户端向正向代理发送请求,然后正向代理将这些请求转发给目标服务器,并将目标服务器的响应再返回给客户端。
用途:
1、访问控制与安全性:正向代理可以通过中间代理服务器隐藏客户端的真实 IP 地址,增加访问的安全性和隐私性。
2、访问限制:可以通过正向代理实现对某些特定资源的访问控制,例如内部网络资源或者受限访问的外部资源。
3、访问内容的控制:可以对客户端请求或者响应进行修改、过滤或者记录,以实现内容控制或者日志记录等功能。
配置示例:
http {
# 定义正向代理服务器
server {
listen 8080;
location / {
resolver 8.8.8.8;
proxy_pass http://$http_host$request_uri;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
}
在上面的配置中,Nginx 监听在 8080 端口,作为正向代理服务器,将客户端的请求转发给目标服务器。
=========================================================================================================================================
3.2 反向代理(Reverse Proxy)
工作原理:
1、反向代理位于客户端和原始服务器之间,为原始服务器接收到的请求进行代理。客户端不直接与原始服务器通信,而是与反向代理通信。
2、客户端向反向代理发送请求,反向代理根据请求的内容将其转发给内部的一组服务器(如 Web 服务器集群),然后将服务器的响应返回给客户端。
用途:
1、负载均衡:反向代理可以根据负载均衡策略将请求分发给多个服务器,以提高系统的整体性能和可用性。
2、安全性:反向代理可以作为安全屏障,隐藏了后端服务器的实际信息,有效防止直接暴露服务器的一些细节。
3、缓存:反向代理可以缓存静态内容,减轻后端服务器的负载,提高用户访问的响应速度。
配置示例:
http {
# 定义反向代理服务器
server {
listen 80;
location / {
proxy_pass http://backend_servers;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
upstream backend_servers {
server backend1.example.com;
server backend2.example.com;
# 可以添加更多的后端服务器
}
}
在上面的配置中,Nginx 监听在 80 端口,作为反向代理服务器,将客户端的请求转发给 backend_servers 中定义的一组后端服务器。
总结
1、正向代理:代理客户端,隐藏真实客户端,帮助客户端访问其他服务器。
2、反向代理:代理服务器端,隐藏真实服务器,为客户端提供服务,并通过负载均衡、安全性等功能增强服务质量。
3、这两种代理方式在实际应用中有着不同的用途和优势,可以根据具体的需求来选择合适的代理方式配置 Nginx。
3.3反向代理与负载均衡搭建
创建三台nginx服务器,博主是先创建一台配置好yum源,安装好nginx服务后,克隆的另外两台。
服务器一和服务器二只需要启动nginx服务就行,无需修改其他配置
服务器一的配置参数
服务器二的配置参数
服务器三的配置参数
这里我是把反向代理,负载均衡,基于端口的虚拟主机,把主服务器也加入到负载均衡后端服务器一起进行的配置。
1、可以实现一台主服务器做代理,另外两台做后端口负载服务器
2、可以实现一台服务器做代理,另外两个目录做虚拟主机
3、可以实现一台主服务器做转发,从服务器做负载,主服务器既做代理又启用另外端口做负载
#定义一组后端服务器实现负载均衡
upstream backend {
server 192.168.31.26:8080 weight=1;
server 192.168.31.27:8080 weight=2;
server 192.168.31.28:8080 weight=1;
server localhost:9001;
server localhost:9002;
}
#添加本机虚拟主机1
server {
listen 9001;
server_name localhost; # 指定域名
root /var/www/test8080; # 指定目录
index index.html index.htm;
location / {
#try_files $uri $uri/ =404; # 尝试提供文件,如果找不到则返回404错误
}
}
#添加本机虚拟主机2
server {
listen 9002;
server_name localhost; # 指定域名
root /var/www/test8081; # 指定目录
index index.html index.htm;
location / {
#try_files $uri $uri/ =404; # 尝试提供文件,如果找不到则返回404错误
}
}
#本机也参与负载均衡队列,另外启用8080端口提供服务
server {
listen 8080;
server_name localhost; # 指定域名
#root /var/www/test8080; # 指定目录
#index index.html index.htm;
location / {
#try_files $uri $uri/ =404; # 尝试提供文件,如果找不到则返回404错误
}
}
#负载均衡与反向代理
server {
listen 80;
server_name www.test.com;
location / {
proxy_pass http://backend; #指示Nginx 将请求代理到定义在backend中的多个后端服务器上,根据负载均衡策略分发请求。
root html;
index index.html index.htm;
}
}
测试结果:正常
标签:index,负载,正反,代理,server,均衡,服务器,客户端 From: https://blog.csdn.net/weixin_43145281/article/details/140435610以上实验测试正常:可以实现上述要求的负载均衡、主从负载、虚拟端口等功能的实现