当前位置: 首页 > news >正文

nginx 正向代理与反向代理

1. 正向代理(Forward Proxy)

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

工作原理

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

应用场景

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

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 配置反向代理

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

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

相关文章:

  • 【Linux网络编程】高效I/O--select/poll服务器
  • 4.1 Go结构体的指针
  • 上海商米科技通信工程师后端开发岗内推
  • 基于SpringBoot的图书进销存管理系统开发与设计
  • 【AHK】资源管理器自动化办公实例/自动连点设置
  • go-zero中定时任务的用法
  • 如何搭建和管理 FTP 服务器
  • 取topN不同算法的实现的性能差别
  • Java线程池入门04
  • Neo4j 图数据库安装与操作指南(以mac为例)
  • SpringBatch简单处理多表批量动态更新
  • python的列表和元组别再傻傻分不清啦
  • Java 大视界 -- Java 大数据分布式文件系统的性能调优实战(101)
  • 序列化是什么?常见的序列化方式有哪些?什么时候我们会用到序列化?
  • 利用2600分钟开发springboot3+vue3+mybatis保姆级项目总结
  • 天猫代运营公司推荐:品融电商
  • 若依框架集成阿里云OSS
  • CentOS7最小化安装中使用curl安装yum和wget
  • Solr中得Core和Collection的作用和关系
  • 解决Moodo调节心情模块-大声喊出来无法测量出音频分贝
  • dw做网站 如何设置转动/热门推广软件
  • 婚纱影楼网站模板/百度开户怎么开
  • 只做正品的网站/广东seo网站推广
  • 做b2b b2c型的混合网站/百度极速版下载安装最新版
  • 互联网客户做网站/百度竞价排名软件
  • 网站建设要求 优帮云/进入百度搜索首页