nginx 正向代理与反向代理

1. 正向代理(Forward Proxy)

正向代理是指 代理客户端 访问目标服务器,通常用于访问受限资源或隐藏客户端 IP。

工作原理

  1. 客户端请求代理服务器(如 nginx)。
  2. 代理服务器代表客户端向目标网站发起请求。
  3. 目标网站返回内容给代理服务器。
  4. 代理服务器再将内容返回给客户端。

应用场景

  • 科学上网:使用 VPN、代理服务器访问被封锁的网站。
  • 缓存加速:代理服务器缓存资源,提高访问速度(如 Squid)。
  • 匿名访问:隐藏客户端真实 IP,保护隐私。

nginx 配置正向代理

nginx 复制代码
server {
    listen 8080;

    location / {
        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;
    }
}
  • 客户端需要手动 配置代理(如浏览器或系统代理)。
  • proxy_pass http://$http_host$request_uri; 让代理服务器转发客户端请求到目标服务器。

2. 反向代理(Reverse Proxy)

反向代理是指 代理服务器 代表 后端服务器 处理客户端请求,常用于负载均衡和安全防护。

工作原理

  1. 客户端向代理服务器(nginx)发送请求。
  2. 代理服务器转发请求到后端服务器(如 backend.example.com)。
  3. 后端服务器处理请求,并返回给代理服务器。
  4. 代理服务器再将结果返回给客户端。

应用场景

  • 负载均衡:分发请求到多个后端服务器,提高性能。
  • 隐藏后端:避免直接暴露后端服务器,提高安全性。
  • SSL 终结:nginx 处理 HTTPS,再用 HTTP 访问后端,减少后端加密开销。
  • 缓存优化:nginx 作为缓存层,提高响应速度。

nginx 配置反向代理

nginx 复制代码
server {
    listen 80;
    server_name example.com;

    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;
    }
}

upstream backend_servers {
    server 192.168.1.100:8080;
    server 192.168.1.101:8080;
}
  • 代理服务器 无需 客户端配置,用户只访问 example.com
  • proxy_pass http://backend_servers; 让 nginx 将请求转发到后端服务器。
  • upstream 定义多个后端服务器,实现负载均衡。

3. 正向代理 vs 反向代理

对比项 正向代理(Forward Proxy) 反向代理(Reverse Proxy)
代理对象 代理 客户端 访问外部资源 代理 后端服务器 处理请求
主要用途 科学上网、缓存加速、隐私保护 负载均衡、隐藏后端、SSL 终结
客户端配置 需要手动配置代理服务器 不需要额外配置,透明代理
安全性 保护客户端,隐藏真实 IP 保护后端服务器,提高安全性

4. 总结

  • 正向代理 :代理 客户端 访问目标服务器,常见于 VPN、浏览器代理。
  • 反向代理 :代理 服务器 处理客户端请求,常用于负载均衡、后端保护。

如果你的目标是 访问外部资源 ,用 正向代理 ;如果是 优化和保护后端服务器 ,用 反向代理

相关推荐
洋葱 ☠33 分钟前
极简部署linux免费ssl证书Let‘s Encrypt,自动续签,nginx/apache都可以,域名指向服务器即可,无需项目
linux·nginx·ssl
shenghuiping20012 小时前
OPSWAT https enable 问题解决
nginx·https·ssl·443·opswat
oMcLin2 小时前
如何在Ubuntu 22.04上通过调优Nginx和PHP‑FPM,提升高并发WordPress网站的负载均衡与缓存性能?
nginx·ubuntu·php
五仁火烧17 小时前
Vue3 项目的默认端口行为
服务器·vue.js·nginx·容器·vue
oMcLin19 小时前
如何在 RHEL 7 上优化 Nginx 与 PHP‑FPM 配置,确保高并发 Web 应用的稳定性与响应速度?
前端·nginx·php
鲨莎分不晴19 小时前
Nginx 部署前端项目实战指南
运维·前端·nginx
知南x19 小时前
【STM32MP157 视频监控项目】(2) 移植 Nginx
stm32·nginx·音视频
GDAL21 小时前
NGINX njs 全解析:从基础配置到高级特性实战
nginx·njs
报错小能手1 天前
nginx集群聊天室(一) 初步讲解集群聊天室所需库的搭建
c++·nginx
ICT董老师1 天前
通过kubernetes部署nginx + php网站环境
运维·nginx·云原生·容器·kubernetes·php