nginx 反向代理和正向代理区别

本文解析了反向代理的概念,即代理服务器接收Internet上的连接请求,转发给内部服务器,并返回结果给客户端。通过这种方式,代理服务器对外表现为服务器,增强了Web服务器安全性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一直对反射代理的反向不知道如何理解,经过百度知道,再结合下面这幅图,总算弄清楚一点了。简单的说从一个局域网出来到服务端为正向,从客户端要进入一个局域网为反向。
概念:
反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。
概述:
通常的代理服务器,只用于代理内部网络对Internet的连接请求,客户机必须指定代理服务器,并将本来要直接发送到Web服务器上的http请求发送到代理服务器中。由于外部网络上的主机并不会配置并使用这个代理服务器,普通代理服务器也被设计为在Internet上搜寻多个不确定的服务器,而不是针对Internet上多个客户机的请求访问某一个固定的服务器,因此普通的Web代理服务器不支持外部对内部网络的访问请求。当一个代理服务器能够代理外部网络上的主机,访问内部网络时,这种代理服务的方式称为反向代理服务。此时代理服务器对外就表现为一个Web服务器,外部网络就可以简单把它当作一个标准的Web服务器而不需要特定的配置。不同之处在于,这个服务器没有保存任何网页的真实数据,所有的静态网页或者CGI程序,都保存在内部的Web服务器上。因此对反向代理服务器的攻击并不会使得网页信息遭到破坏,这样就增强了Web服务器的安全性。
  反向代理方式和包过滤方式或普通代理方式并无冲突,因此可以在防火墙设备中同时使用这两种方式,其中反向代理用于外部网络访问内部网络时使用,正向代理或包过滤方式用于拒绝其他外部访问方式并提供内部网络对外部网络的访问能力。因此可以结合这些方式提供最佳的安全访问方式。
为何叫反向:
但是这也没法解释为何他叫反向,从原理上来说.代理服务器都是处理来自客户端的请求,并将其转发到目的服务器上,所以代理服务器的工作并没有任何反向的意味,而下面这张图就能说明为何反向代理叫反向:
这里写图片描述

  对了,从结构上来看,正向代理和反向代理的左右两边换了一下,原本代理服务器的客户端来自内网.其和代理服务器组成一个LAN,而反向代理之后.代理服务器和服务器组成了一组.所以从结构来看,是reverse的,从英文的角度来看,reverse这个词包含翻转的意思,其意思就是指结构图上的这种反转,但是由于翻译的关系.到了中文变成反向代理.其实proxy并没有做和以前有什么不同的事情.它仍旧是将来自客户端的请求转发给实际端.,而时至今日,由于CDN的大量使用,反向代理后面的服务器为了适应这种跨网络的架构,而均采用实际IP地址.这样就往往更不容易使得大家对”反向代理这个名词中的反向到底指什么”这个问题有个清晰的答案了。
### Nginx 正向代理反向代理区别 Nginx 支持以正向代理反向代理两种模式工作。在这两种模式下,尽管都涉及到客户端、代理服务器目标服务器三个角色,但其工作机制服务目的存在显著差异。 #### 正向代理的特点 在正向代理环境中,客户端需显式配置代理服务器的信息(IP 地址或域名),通过该代理发起对外部资源的请求。这种方式允许企业内部员工安全地访问互联网资源的同时,也便于实施统一的安全策略管理[^4]。 #### 反向代理的特点 相比之下,在反向代理场景里,客户端并不知晓实际提供服务的目标服务器的存在;相反,它们认为自己正在直接连接至反向代理本身。这种设计隐藏了后端架构细节,增强了系统的安全性与灵活性。当客户端发出HTTP 请求时,这些请求会被转发给合适的后端服务器处理后再返回响应结果给原始请求者[^3]。 --- ### 配置实例展示 #### 正向代理配置样例 为了使 Nginx 成为一台有效的正向代理设备,可以在 `http` 块内加入如下指令: ```nginx http { ... server { listen 80; location / { resolver 8.8.8.8; # DNS 解析器 proxy_pass http://$http_host$request_uri; # 设置 HTTP 头信息以便于追踪原始 IP 其他元数据 proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } } ``` 此段代码定义了一个监听于标准 Web 端口 (80) 的虚拟主机,并利用 `$http_host` `$request_uri` 动态构建上游 URL 来实现透明化代理功能[^1]。 #### 反向代理配置示例 下面是一个简单的反向代理设置例子,用于将来自特定路径 `/api/` 下的所有流量重定向到另一台运行 API 应用程序的服务器上: ```nginx http { ... upstream api_backend { server backend.example.com weight=5 max_fails=3 fail_timeout=30s; } server { listen 80; location /api/ { proxy_pass http://api_backend/; # 转发必要的头部字段 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; } } } ``` 这里创建了一个名为 `api_backend` 的负载均衡池,并指定了一个默认成员。随后,在匹配规则中指定凡是符合 `/api/*` 模式的 URI 将被送往上述定义好的集群进行进一步处理[^2]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值