Nginx 作为代理服务器时,主要用于反向代理(最常用,转发客户端请求到后端服务)或正向代理(较少用,为客户端提供访问外部网络的代理)。以下是两种场景的具体配置示例:

一、反向代理配置(最常用)

反向代理是 Nginx 最核心的功能之一,用于将客户端请求转发到后端的应用服务器(如 Java、Node.js、Python 服务等),可隐藏后端服务地址、实现负载均衡、SSL 终结等。

基础配置示例(代理单个后端服务)
# 全局配置
worker_processes auto; # 自动设置工作进程数(通常等于CPU核心数)
events {worker_connections 1024; # 每个工作进程的最大连接数
}http {include mime.types; # 引入MIME类型映射default_type application/octet-stream;# 反向代理核心配置server {listen 80; # 监听80端口(HTTP)server_name example.com; # 代理服务器域名(客户端访问的域名)# 所有请求都转发到后端服务location / {# 后端服务地址(协议://IP:端口,如Node.js服务、Java服务等)proxy_pass http://127.0.0.1:3000; # 传递客户端真实IP和请求头(重要)proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;# 超时设置(按需调整)proxy_connect_timeout 60s; # 连接后端超时proxy_read_timeout 60s;    # 读取后端响应超时proxy_send_timeout 60s;    # 发送请求到后端超时}}
}
配置说明:
  1. proxy_pass:指定后端服务地址(必须),格式为 协议://IP:端口协议://域名

    • 示例:proxy_pass http://127.0.0.1:3000 表示转发到本地3000端口的服务。
    • 注意:proxy_pass 后是否带 / 影响路径拼接(见下方“路径匹配规则”)。
  2. proxy_set_header:传递客户端请求头到后端,避免后端服务获取不到真实客户端信息(如 IP、Host)。

    • Host $host:传递客户端访问的域名(如 example.com)。
    • X-Real-IP $remote_addr:传递客户端真实 IP。
  3. 超时设置:防止后端服务无响应时 Nginx 长期等待,避免连接泄露。

路径匹配规则(proxy_pass/ vs 不带 /
  • 场景1location /api + proxy_pass http://backend(不带 /
    客户端请求 http://example.com/api/user → 转发到 http://backend/api/user(保留 /api 前缀)。

  • 场景2location /api + proxy_pass http://backend/(带 /
    客户端请求 http://example.com/api/user → 转发到 http://backend/user(去掉 /api 前缀)。

高级:代理多个服务(按路径区分)
server {listen 80;server_name example.com;# 1. 代理API服务(路径以/api开头)location /api {proxy_pass http://127.0.0.1:8080; # 后端API服务(如Java SpringBoot)proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;}# 2. 代理前端静态资源(路径以/static开头)location /static {proxy_pass http://127.0.0.1:8000; # 前端服务(如Node.js静态服务器)proxy_set_header Host $host;}# 3. 其他请求默认返回404location / {return 404;}
}

二、正向代理配置(客户端代理)

正向代理用于为客户端提供访问外部网络的代理(如科学上网、客户端IP隐藏),配置较少见。

http {# 正向代理核心配置server {listen 8888; # 客户端需连接的代理端口# 允许客户端通过代理访问任意域名resolver 8.8.8.8; # DNS resolver(使用谷歌DNS解析外部域名)location / {# 正向代理到客户端请求的目标地址proxy_pass http://$http_host$request_uri;# 支持HTTPS代理(需配置SSL隧道)proxy_connect_timeout 10s;proxy_send_timeout 10s;proxy_read_timeout 10s;}}
}
使用方式:

客户端(如浏览器、curl)需手动设置代理为 http://代理服务器IP:8888,即可通过该代理访问外部网络。

三、配置SSL(HTTPS代理)

若需要代理 HTTPS 请求(客户端通过 https://example.com 访问),需配置 SSL 证书:

server {listen 443 ssl; # 监听443端口(HTTPS)server_name example.com;# SSL证书配置(替换为实际证书路径)ssl_certificate /path/to/cert.pem;   # 公钥证书ssl_certificate_key /path/to/key.pem; # 私钥# 代理到后端HTTP服务(Nginx终结SSL,后端用HTTP通信)location / {proxy_pass http://127.0.0.1:3000;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;}
}# 可选:HTTP自动跳转到HTTPS
server {listen 80;server_name example.com;return 301 https://$host$request_uri;
}

四、配置检查与生效

  1. 检查配置是否正确

    nginx -t  # 输出 "syntax is ok" 表示配置无误
    
  2. 重启Nginx生效

    nginx -s reload  # 平滑重启(不中断现有连接)
    

核心总结

  • 反向代理:用于服务器端转发请求到后端服务,配置核心是 location + proxy_pass + 头信息传递。
  • 正向代理:用于客户端代理,需配置 resolver 和代理端口。
  • 注意路径匹配规则和超时设置,生产环境建议配置 SSL 证书。

根据实际需求修改 server_nameproxy_pass 地址、端口和路径即可。

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

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

相关文章

MySQL数据库知识体系总结 20250813

一、数据库的原理 1.数据库的分类 我们可以根据数据的结构类型,将数据分成三类,分别是:结构化数据,半结构化数据,非结构化数据。 要点:对于结构化数据来讲通常是先有结构再有数据。要点:对于半…

C++ 中构造函数参数对父对象的影响:父子控件管理机制解析

文章目录C 中构造函数参数对父对象的影响:父子控件管理机制解析1. Qt 中的父对象管理机制2. 构造函数传递父对象的不同方式2.1. 父控件是 QWidget parent(通用方式)分析:2.2. 父控件是 Books_Client parent(限制父控件…

直播美颜SDK开发实战:高性能人脸美型的架构与实现

在直播行业里,美颜已经不再是锦上添花,而是标配中的标配。无论是游戏主播、带货达人,还是唱歌、跳舞的才艺主播,直播美颜SDK往往决定了用户的第一印象和停留时长。尤其是高性能人脸美型技术,不仅能让主播的五官更加自然…

JavaWeb(苍穹外卖)--学习笔记18(Apache POI)

前言 本篇文章是学习B站黑马程序员苍穹外卖的学习笔记📑。我的学习路线是Java基础语法-JavaWeb-做项目,管理端的功能学习完之后,就进入到了用户端微信小程序的开发,用户端开发的流程大致为用户登录—商品浏览(其中涉及…

OpenJDK 17 源码 安全点轮询的信号处理流程

OpenJDK 17 源码,安全点轮询的信号处理流程如下(重点分析安全点轮询相关部分):核心信号处理流程信号触发:当线程访问安全点轮询内存页时(SafepointMechanism::is_poll_address),会触…

InfluxDB 在工业控制系统中的数据监控案例(一)

工业控制系统数据监控的重要性**在工业领域,生产过程的复杂性和连续性使得数据监控成为保障生产稳定运行的关键环节。通过实时收集、处理和分析生产数据,企业能够及时掌握设备运行状态、产品质量信息以及生产流程的各项参数,从而为生产决策提…

嵌入式学习(day26)frambuffer帧缓冲

一、UI技术: User interface(1)framebuffer: 帧缓冲、帧缓存技术 Linux内核专门为图形化显示提供的一套应用程序接口。流程如下:1. 打开显示设备 (/dev/fb0) 2. 获取显示设备相关参数(分辨率,像素格式)---》…

408每日一题笔记 41-50

答案:A 解析:CSMA/CD 协议里,“争用期” 就是信号在总线上最远两个端点之间往返传输的时间,也叫冲突窗口,选 A。

【物联网】基于树莓派的物联网开发【26】——树莓派开启串口并配置串口助手Minicom

串口配置 (1)打开串口,终端输入命令: sudo raspi-config (2)串口设置选择Interfacing Options→Serial port→No→Yes→ok(3)设置开启,打开串口 (4&#xff0…

考研/考公知识共享平台的设计与实现-项目分享

考研/考公知识共享平台的设计与实现-项目分享项目介绍项目摘要学生前台用例图管理员用例图系统流程图系统功能结构图实体图学生信息实体图资料信息管理实体图报考指南管理写在最后项目介绍 使用者:管理员、学生前台、学生后台 开发技术:MySQLJavaSpring…

一键设置 NTP 时区的脚本(亲测,适用于部署 K8S 的前置环境)

文章目录一、时区和时间同步的配置命令二、完整脚本ntp_timezone_setup.sh三、使用方法3.1、创建脚本3.2、赋予执行权限3.3、运行脚本3.4、验证一、时区和时间同步的配置命令 整理用于做时区和时间同步的配置几条命令分别如下: 1️⃣ 编辑 chrony 配置 vim /etc/…

BPMN编辑器技术实现总结AI时代的工作流编辑器

项目概述 基于 diagram.js 的 BPMN 流程设计器,通过依赖注入(DI)实现模块化扩展,自定义模块扩展与SVG图形渲染。后端工作流引擎自定义统一任务调度函数,实现异构模型统一调用。 核心技术架构 1. diagram.js 架构基础 核心模块组成 Canv…

两阶段最小二乘法(2SLS)与 工具变量(IV)模型

以下是关于两阶段最小二乘法(2SLS)与工具变量(IV)模型关系的系统解析,结合计量经济学理论与论文上下文进行说明:一、核心关系:2SLS是IV模型的实现方法 1. IV模型:解决内生性的理论框…

熬夜面膜赛道跑出的新物种

在快节奏的现代生活中,熬夜已成为都市人群的常态,深夜11点后的朋友圈总是一片“失眠”哀嚎。随之而来的是“熬夜肌”问题的激增——暗沉、干燥、屏障受损等诉求催生了庞大的熬夜面膜市场。2025年,中国面膜线上规模已达484亿元,其中…

20250813测试开发岗(凉)面

1. 自我介绍2. 你如何理解测开,你认为测开的工作有哪些3. 测试的时候包括哪些部分4. 就功能层面,你认为需要从那些部分考虑,形成一个完整并可执行的trace(是这个词吧)5. 你了解数据库吗(我说只会比较基础的…

面向Python/C#开发者入门Java与Bukkit API

本教程将以"手持发射器箭矢机枪"功能为例,带你掌握Java语言基础和Bukkit API的核心概念,最终实现自主开发插件。 我们将通过剖析一个实际Java代码文件,逐步解析其运作机制,帮助你顺利将现有编程知识迁移到Java和Bukkit…

从100到0.3美元:GPT-5用价格战血洗大模型赛道

————————— 一、从 100 美元到 0.3 美元:史无前例的效率革命 ————————— 互联网女王 Mary Meeker 在《AI 趋势报告 2025》里写下这组数字: • 训练成本 8 年飙升 2400 倍; • 推理成本 2 年暴跌 99.7%。OpenAI 把“暴跌”推到…

第三十二天(文件操作安全)

文件遍历上传下载删除编辑包含等 $_FILES:PHP中一个预定义的超全局变量,用于在上传文件时从客户端接收文件,并将其保存到服务器上。它是一个包含上传文件信息的数组,包括文件名、类型、大小、临时文件名等信息。 $_FILES"表…

系统集成项目管理工程师【第十一章 规划过程组】规划风险应对、规划采购管理篇

系统集成项目管理工程师【第十一章 规划过程组】规划风险应对、规划采购管理篇 一、规划风险应对:为项目穿上"防护衣" 1. 什么是规划风险应对? 规划风险应对是基于风险量化分析结果,制定可选方案、选择应对策略并商定具体行动的过程…

20250813比赛总结

题目T1.volumeT2.storyT3.treeT4.game预计分数6060030实际分数306000T1.volume 确实是暴力,但我是用数组统计每个可能出现的数,于是3AC 3WA 4TLE。拿到全部分应该直接按照题目模拟。 T2.story 暴力dfs,由于忘记优化所以60pts,而且…