nginx 正向代理与反向代理

embedded/2025/2/27 18:23:59/

1. 正向代理(Forward Proxy)

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

工作原理

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

应用场景

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

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

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


http://www.ppmy.cn/embedded/167597.html

相关文章

MySQL -安装与初识

博客主页:【夜泉_ly】 本文专栏:【暂无】 欢迎点赞👍收藏⭐关注❤️ 文章目录 安装1. 更新系统包列表2. 安装MySQL服务器3. 启动并验证MySQL服务4. 运行安全配置向导5. 验证MySQL登录6. 设置root用户密码7. 配置远程访问(可选&…

如何去除word页眉上面的横线

问题:如何去除页眉上面的横线 也就是字上面的这一条线 解决方法: 双击选中,然后光标会定位到页眉上,点击下图中的无格式,就可以消除了 消除后的情况如下

【Maven】-- Maven Scope 详解

目录 Maven Scope 详解 1. 引言 2. Maven 依赖范围(Scope)分类 2.1 compile(默认范围) 2.2 provided 2.3 runtime 2.4 test 2.5 system 2.6 import(仅用于 dependencyManagement) 3. Scope 作用范…

MySQL--》如何在MySQL中打造高效优化索引

目录 初识索引 索引结构 性能分析 索引使用 最左前缀法则 SQL提示使用 覆盖索引使用 前缀索引使用 索引失效情况 初识索引 索引(index):是帮助MySQL高效获取数据的数据结构(有序),在数据之外数据库系统还维护着满足特定查找算法的数据结构&…

最小化重投影误差求解PnP

问题描述 已知n个空间点 P i [ x i , y i , z i ] T P_i[x_i,y_i,z_i]^T Pi​[xi​,yi​,zi​]T,其投影的像素坐标 p i [ u i , v i ] T p_i[u_i,v_i]^T pi​[ui​,vi​]T求相机的位姿R,T。 问题分析 根据相机模型,像素点和空间点的位置…

Node.js v16 版本安装

查看自己电脑上有没有node.js 1.打开命令提示符或终端窗口(windows上是cmd,macOS和Linux上是终端)。 2.在命令提示符或终端窗口中输入以下命令:node -v 3.如果你已经安装了Node.js,你将看到一个版本号,例如v14.15.4。 4.如果你看到一个错误消息或者什么…

12个大语言模型平台对比测试-搜索视角

这里写自定义目录标题 1 背景1.1 简单问题设置1.2 答案标准 2 常见大语言模型平台回答表现2.1 ChatGPT-o3-mini2.2 Grok-Grok 3联网2.3 perplexity-pro2.4 通义-Qwen2.5深度搜索2.5 智普清言-GLM 4 Plus2.6 deepseek R1联网2.7 Kimi-k1.5长思考联网2.8 秘塔-R1联网2.9 纳米AI-R…

MySQL 中如何查看 SQL 的执行计划?

SQL 语句前面使用 EXPLAIN 关键字: EXPLAIN SELECT * FROM users WHERE id 1; 字段 含义 id 查询的序号(如果是子查询或联合查询,会有多个 id)。 select_type 查询的类型(简单查询、子查询、联合查询等&#xff…