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、浏览器代理。
  • 反向代理 :代理 服务器 处理客户端请求,常用于负载均衡、后端保护。

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

相关推荐
祈祷苍天赐我java之术8 小时前
什么是Nginx?:掌握高性能 Web 服务器核心技术
服务器·前端·nginx
没有余地 EliasJie13 小时前
一站式搭建WordPress网站与Nginx RTMP流媒体服务
nginx·apache
陶锅煮新茄子14 小时前
Ubuntu 22.04 安装Nginx过程记录
nginx
青山的青衫14 小时前
【用homebrew配置nginx+配置前端项目与后端联调】Macbook M1(附一些homebrew操作)
运维·前端·nginx
my一阁1 天前
2025-web集群-问题总结
前端·arm开发·数据库·nginx·负载均衡·web
念念不忘 必有回响1 天前
nginx前端部署与Vite环境变量配置指南
前端·nginx·vite
..Move...1 天前
Docker应用部署tomcat和nginx
nginx·docker·tomcat
苹果醋31 天前
JAVA面试汇总(二)多线程(五)
运维·vue.js·spring boot·nginx·课程设计
牛奶咖啡132 天前
zabbix实现监控Apache、Nginx、php-fpm应用的实操保姆级流程
nginx·apache·zabbix·php-fpm·zabbix监控apache·zabbix监控nginx·zabbix监控php-fpm
枫叶梨花2 天前
实战:将 Nginx 日志实时解析并写入 MySQL,不再依赖 ELK
mysql·nginx·elk