Nginx正反向代理

首先应该先明确正向代理和反向代理的配置方式是一样的,不一样的是两者的作用和应用场景不同

一 概念

正向代理

客户端在访问服务器中间加了一个代理服务器,客户端需要知道这个代理服务器的的IP主动连接,再通过代理服务器访问目标服务器。重点就是代理服务器和目标服务器并不是一体的,目标服务器的本意没想通过代理服务器返回资源,是客户端的意图。
在这里插入图片描述

反向代理

客户端在访问服务器时,当前的服务器并不是直接提供资源的服务器,这个服务器其实是代理服务器,它将访问目标服务器,带着结果给客户端响应。重点就是代理服务器(客户端访问的那个服务器)和目标服务器是一体,放客户端并不知道自己访问的是代理服务器(透明),提供服务的一方就是想让你先访问代理服务器,代理服务器再去访问目标服务器。
在这里插入图片描述
举个例子就是甲、乙两家公司有合作,A、B属于甲公司,C、D属于乙公司,甲公司的A和乙公司需要进行沟通,第一种情况B的替A传话给C,这就是正向代理;第二种情况A给乙公司发邮件想跟D确认情况,但是D只是个传话的,决策权在C,D跟C说了情况再跟A反馈,这就是反向代理。

正向代理反向代理
主要作用屏蔽客户端IP、集中式缓存、解决客户端不能直连服务端的问题。屏蔽服务端内部实现、负载均衡、缓存。
应用场景爬虫、翻墙、maven 的nexus 服务Nginx 、Apache负载均衡应用

二 配置

在location配置proxy_pass参数,表明指向的地址
正向代理演示:
访问虚拟机的/baidu.html,将其正向代理到百度主页

#正向代理到baidu 服务
location = /baidu.html {
  proxy_pass http://www.baidu.com;
}

在这里插入图片描述
反向代理演示:
访问虚拟机的/snowman/hello.html,反向代理到虚拟机的tomcat的hello.html文件
先在tomcat地webapp目录下建个snowman/hello.html文件

location = /snowman {
  proxy_pass http://127.0.0.1:8080;
}

在这里插入图片描述
在这里插入图片描述
代理相关参数:

proxy_pass           # 代理服务
proxy_redirect off;   # 是否允许重定向
proxy_set_header Host $host; # 传 header 参数至后端服务
proxy_set_header X-Forwarded-For $remote_addr; # 设置request header 即客户端IP 地址
proxy_connect_timeout 90; # 连接代理服务超时时间
proxy_send_timeout 90; # 请求发送最大时间
proxy_read_timeout 90;  # 读取最大时间
proxy_buffer_size 4k; 
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k; 
proxy_temp_file_write_size 64k;
### Nginx正向代理与反向代理的区别 #### 正向代理的工作原理 正向代理是指客户端通过代理服务器来访问目标资源。在这种模式下,客户端明确指定了要访问的目标服务器,并且请求会先发送到代理服务器上。之后由该代理服务器代替客户端去获取所需的数据并返回给客户端[^1]。 对于租房的例子来说,如果把房子比喻成互联网上的服务,则租客相当于浏览器或其他应用程序;而房东就是远程主机或Web应用本身。此时如果有位中介帮助联系房源并与之沟通细节——这位中介就扮演着“正向代理”的角色:它代表客户(即租客)同外界打交道。 ```bash # 配置Nginx作为正向代理的一个简单例子 http { server { listen 80; location / { resolver 8.8.8.8; # 使用Google DNS解析域名 set $target http://example.com$request_uri; proxy_pass $target; # 设置转发头信息以便于识别原始IP地址 proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host example.com; } } } ``` #### 反向代理的工作原理 相比之下,在反向代理的情况下,外部用户并不知道自己实际上是在跟一个中间件交互而不是直接连接至最终的目的地。当用户的请求到达这个中间节点时,后者再决定应该将此流量导向哪个内部网络中的真实服务器处理。因此,从用户的角度来看,他们始终认为自己在与同一个固定的入口点通信[^5]。 继续沿用之前的类比,假设现在有一个物业管理公司负责管理多个公寓楼内的出租单元。每当有人想要查看某个特定房间的信息时,他们会首先找到这家公司询问情况。物业公司将根据需求安排相关人员带领参观相应的房屋,但访客无需关心具体是由谁陪同以及去了哪栋建筑——这就是所谓的“反向代理”。 ```bash # 下面是一个简单的Nginx反向代理配置实例 http { upstream backend_servers { server web_server_1 weight=5 max_fails=3 fail_timeout=30s; server web_server_2 backup; } server { listen 80; location / { proxy_pass http://backend_servers; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } } } ``` #### 主要差异总结 | 特征 | 正向代理 | 反向代理 | | --- | --- | --- | | **定义** | 客户端设置代理以访问其他网站的服务方式 | 用户不知道背后存在多台服务器提供服务的情况下的代理机制 | | **用途场景** | 访问受限制的内容、绕过地理封锁等 | 负载均衡、缓存加速、安全防护等功能 | | **可见性** | 对外公开显示为代理后的源站 | 外部只看到单一的代理接口 |
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值