Nginx - 正向vs反向代理

参考:

https://blog.csdn.net/william_n/article/details/127387009

AI问答​

Nginx 正向代理 vs 反向代理详解​


​1. 正向代理(Forward Proxy)​

​定义​

  • ​客户端主动配置​​的代理服务器,代表客户端向外部服务器发送请求。
  • ​隐藏客户端真实 IP​​,突破访问限制(如翻墙)。

​工作原理​

客户端 → 正向代理 → 互联网 → 目标服务器
  • ​客户端​​明确知道自己使用了代理(如浏览器设置代理服务器)。
  • ​目标服务器​​看到的是代理服务器的 IP,而非客户端真实 IP。

​典型用途​

  1. ​企业内网访问外网​​(所有员工流量经过公司代理)。
  2. ​科学上网​​(通过代理访问被封锁的网站)。
  3. ​缓存加速​​(代理服务器缓存常用资源)。

​Nginx 配置正向代理​

Nginx ​​默认不支持​​正向代理(需额外模块如 ngx_http_proxy_connect_module):

server {listen 3128;  # 代理端口resolver 8.8.8.8;  # DNS解析服务器location / {proxy_pass http://$http_host$request_uri;  # 转发到目标地址proxy_set_header Host $http_host;}
}
  • ​客户端​​需手动配置代理(如浏览器设置 SOCKS5://代理IP:3128)。

​2. 反向代理(Reverse Proxy)​

​定义​

  • ​服务端部署​​的代理服务器,代表后端服务器接收客户端请求。
  • ​隐藏后端真实 IP​​,实现负载均衡、安全防护等。

​工作原理​

客户端 → 反向代理 → 后端服务器(Server 1/2/3...)
  • ​客户端​​不知道后端服务器的存在(以为代理就是目标服务器)。
  • ​后端服务器​​看到的是代理服务器的 IP,而非客户端 IP。

​典型用途​

  1. ​负载均衡​​(将请求分发到多个后端服务器)。
  2. ​隐藏后端架构​​(防止直接暴露服务器IP)。
  3. ​SSL 终止​​(在代理层处理 HTTPS 加解密)。
  4. ​缓存静态资源​​(减轻后端压力)。

​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;}
}upstream backend_servers {server 192.168.1.100:8080;  # 后端服务器1server 192.168.1.101:8080;  # 后端服务器2server 192.168.1.102:8080;  # 后端服务器3
}

​3. 核心区别对比​

​特性​​正向代理​​反向代理​
​配置方​客户端(如浏览器设置代理)服务端(Nginx 服务器配置)
​隐藏对象​隐藏客户端 IP隐藏后端服务器 IP
​客户端感知​客户端知道自己在用代理客户端无感知
​典型场景​科学上网、内网访问外网负载均衡、API 网关、CDN
​Nginx 支持​需额外模块(非原生支持)原生支持(proxy_pass 指令)

​4. 高级用法示例​

​(1) 反向代理 + 负载均衡​

upstream backend {least_conn;  # 最少连接算法server 10.0.0.1:80 weight=3;  # 权重3server 10.0.0.2:80;server 10.0.0.3:80 backup;    # 备用服务器
}server {listen 80;location / {proxy_pass http://backend;}
}

​(2) 反向代理 + SSL 终止​

server {listen 443 ssl;ssl_certificate /path/to/cert.pem;ssl_certificate_key /path/to/key.pem;location / {proxy_pass http://backend;  # 明文转发到后端}
}

​(3) 正向代理(需编译模块)​

# 编译 Nginx 时添加模块
./configure --add-module=/path/to/ngx_http_proxy_connect_module

​5. 如何选择?​

  • ​用正向代理​​:当需要客户端主动通过代理访问外部资源(如爬虫、翻墙)。
  • ​用反向代理​​:当需要保护后端服务器、负载均衡或统一入口(如 Web 应用)。

​6. 常见问题​

​Q1: Nginx 能同时做正向和反向代理吗?​

  • 可以,但需分开配置(正向代理需额外模块支持)。

​Q2: 反向代理会影响性能吗?​

  • 会增加少量延迟(代理层处理),但可通过缓存和负载均衡优化。

​Q3: 如何调试代理问题?​

  • ​检查日志​​:
    tail -f /var/log/nginx/access.log
    tail -f /var/log/nginx/error.log
  • ​验证请求头​​:
    curl -v http://example.com

掌握这两种代理模式,你就能灵活应对各种网络架构需求! 🚀

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/100250.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/100250.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

装饰器模式在Spring中的案例

设计模式-装饰器模式 装饰器模式所解决的问题是,在不改变原来方法代码的情况下对方法进行修饰,从而丰富方法功能。 Spring架构中的装饰器模式 在Spring架构中,以线程池进行举例。 线程池 线程池是一个对线程集中管理的对象,集中管…

云原生与 AI 驱动下的数据工程新图景——解读 DZone 2025 数据工程趋势报告【附报告下载】

在 AI 技术从“实验性”走向“企业级落地”的关键阶段,数据工程作为底层支撑的重要性愈发凸显。近日,DZone 发布的《2025 数据工程趋势报告》(Scaling Intelligence with the Modern Data Stack)通过对全球 123 位 IT 专业人士的调…

9.5 机器翻译与数据集

语言模型是自然语言处理的关键,而机器翻译是语言模型最成功的基准测试,因为机器翻译正是将输入序列转换成输出序列的序列转换模型的核心问题。序列转码模型在各类现代人工智能应用中国呢发挥着至关重要的作用,因此我们将其作为本章剩余部分和…

Linux 内核镜像与启动组件全解析:从 vmlinux 到 extlinux.conf

🧠 Linux 内核镜像与启动组件全解析:从 vmlinux 到 extlinux.conf 在嵌入式 Linux 系统中,启动流程涉及多个关键文件和机制。不同的镜像格式和配置文件承担着不同的职责,从内核编译到 bootloader 加载,再到系统启动。本…

【系统分析师】2024年下半年真题:论文及解题思路

更多内容请见: 备考系统分析师-专栏介绍和目录 文章目录 试题一:论devops在企业信息系统开发中的应用 试题二:论系统业务流程分析方法及应用 试题三:论软件测试方法及应用 试题四:论信息系统运维管理 试题一:论devops在企业信息系统开发中的应用 1、概要叙述你参与管理和…

AI GEO 实战:借百度文小言优化,让企业名称成搜索热词

在当今数字化浪潮中,企业的线上曝光度和搜索可见性至关重要。百度作为国内占据主导地位的搜索引擎,其推出的大模型文小言蕴含着巨大的潜力。通过巧妙运用 AI GEO(生成式引擎优化)策略,企业完全有可能让自己的公司名称成…

文件操作知识点总结

目录 1.为什么使用文件 2.什么是文件? 2.1 程序文件 2.2 数据文件 2.3 文件名 3.二进制文件和文本文件 4.文件的打开和关闭 4.1 流和标准流 4.1.1 流 4.1.2 标准流 4.2 文件指针 4.3 文件的打开和关闭 4.3.1 fopen函数 4.3.2 fclose函数 5.文件的顺序…

oracle认证有哪几种?如何选择

Oracle(甲骨文)不仅是全球领先的数据库软件巨头,更是企业级数据管理的代名词,获得Oracle认证,证明可从事Oracle数据库服务器的数据操作和管理等工作。下面给大家详细其主要认证类型及其在职业发展中的含金量&#xff0…

AppTest邀请测试测试流程

相比AppGallery邀请测试,AppTest邀请测试具备以下全新能力:若您同时发布了多个测试版本,AppTest支持测试版本自动升级到最新的测试版本。您可以选择将当前最新在架版本的应用介绍截图展示给测试人员,视觉效果更好,提升…

硬件 - oring多电源切换

目录 一、ORing电路 1.1 ORING 电路 1.2 ORING 电路关键部分 二、多电源切换 2.1 主要思路 2.2 适用场景 一、ORing电路 1.1 ORING 电路 中文常称 “或环电路” 或 “并联冗余电路”是一种电源并联冗余拓扑结构 核心功能:将多路独立电源的输出 “并联整合”&a…

Qt多语言翻译实战指南:常见陷阱与动态切换解决方案

问题背景 在Qt项目国际化过程中,开发者经常会遇到各种翻译逻辑问题,特别是需要实现运行时语言动态切换功能时。一个典型场景是:程序默认英文显示,加载中文翻译文件后界面变为中文,但再次切换回英文时却失败。本文将深入…

机器人要增加力矩要有那些条件和增加什么

机器人要增加力矩要有那些条件和增加什么进行详细讲解 好的,这是一个非常专业且重要的问题。为机器人增加力矩(通常指提升关节输出扭矩)不是一个简单的部件替换,而是一个涉及动力链、结构、控制和散热的系统性工程。 以下将详细讲…

spring集成aes加密、rsa加密

文章目录spring集成对称加密spring集成rsa加密spring集成对称加密 encrypt:key: aaabbb # 只配置这个参数就实现了对称加密salt: 333444 # 这个可以不配置spring集成rsa加密 例如apollo,如果没有配置encrypt.key,那么apollo不配置应该也是可以的&#…

OpenSTL PredRNNv2 模型复现与自定义数据集训练

OpenSTL PredRNNv2 模型复现与自定义数据集训练 概述 本文将详细介绍如何复现 OpenSTL 中的 PredRNNv2 模型,并使用自定义的 NPY 格式数据集进行训练和预测。我们将从环境配置开始,逐步讲解数据预处理、模型构建、训练过程和预测实现,最终实现…

Linux内核IPv4隧道模式封装机制剖析

概述 在Linux网络栈中,XFRM(Transform)子系统负责实现IPsec等安全协议的功能。其中,xfrm4_mode_tunnel.c是实现IPv4隧道模式封装的核心模块,为IPv4数据包提供隧道模式的封装和解封装能力。本文将深入分析这一模块的实现机制。 模块架构与功能 该模块通过注册到XFRM框架…

OPC Client第10讲:实现主界面;获取初始界面传来的所有配置信息config【C++读写Excel:xlnx;ODBC;缓冲区】

接前面代码内容: OPC Client第6讲(wxwidgets):Logger.h日志记录文件(单例模式);登录后的主界面_wx.logger-CSDN博客 OPC Client第8讲:OPC UA;KEPServerEX创建OPC服务器…

快速入门HarmonyOS应用开发(一)

目录 前言 一、准备工作 二、实战开发 2.1、Navigation简介 2.2、页面路由开发 2.2.1、创建常量 2.2.2、创建字符串资源 2.2.3、创建float资源 2.2.4、创建color资源 2.2.5、创建数据实体 2.2.6、创建页面路由表 2.2.7、创建Navigation根容器 2.2.8、创建NavDesti…

AI 进课堂 - 语文教学流程重塑

AI 进课堂 - 语文教学流程重塑执教语文十余年,备课案头的参考书堆得比学生作业本还高,批改作文时红笔芯换得比粉笔还勤。 直到去年把 JBoltAI 请进课堂,那些重复机械的工作突然有了新解法,连课堂上孩子们的眼神都亮了许多 —— 这…

用户是否可以同时使用快照和备份来保护云服务器数据安全?

在云计算环境中,云服务器已成为企业和个人数据存储、应用部署和业务运营的重要平台。随着业务数据量的不断增长,数据安全和业务连续性成为用户关注的核心问题。云服务器提供的快照和备份功能为用户提供了有效的数据保护手段,但很多人会疑问&a…

RDS-MYSQL,这个RDS是什么?和mysql有什么区别?

好的,这是一个非常常见且重要的问题。我用最通俗易懂的方式给你解释清楚。 一、大白话解释 你可以把 MySQL 和 RDS MySQL 的关系,想象成:MySQL:就像是你自己买零件组装的一台电脑。 你需要自己挑选CPU、内存、硬盘、主板&#xff…