LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

一文吃透 Nginx 反向代理配置(原理 + 实战)

admin
2026年2月13日 21:56 本文热度 37

在前后端分离、微服务架构中,Nginx 几乎是必不可少的基础组件。 无论是部署前端项目、代理后端接口,还是实现负载均衡,反向代理都是 Nginx 最核心、使用频率最高的能力

本文将从 概念、原理、配置、实战、常见问题 五个角度,完整讲清楚:

什么是 Nginx 反向代理,以及如何在实际项目中正确配置它


一、什么是反向代理

1. 正向代理与反向代理的区别

在理解反向代理之前,先明确一个关键点:

  • 正向代理代理的是客户端
  • 反向代理代理的是服务器

反向代理的核心思想是:

客户端只与代理服务器通信,并不知道真实后端服务器的存在。


2. 反向代理的基本工作流程

在这个过程中:

  1. 客户端请求发送到 Nginx
  2. Nginx 根据配置规则转发请求
  3. 后端服务器处理业务逻辑
  4. 结果由 Nginx 返回给客户端

3. 为什么企业项目一定要用反向代理

反向代理在实际工程中的价值非常明显:

  1. 统一访问入口
  2. 隐藏后端真实地址和端口
  3. 解决前后端分离的跨域问题
  4. 为负载均衡和高可用打基础
  5. 集中处理 HTTPS、日志、限流等通用能力

二、Nginx 反向代理的核心配置结构

在 Nginx 中,反向代理的配置核心只有一个指令

proxy_pass

但真正用好它,需要理解完整结构。


1. 最基础的反向代理配置

server {
    listen 80;
    server_name localhost;

    location /api/ {
        proxy_pass http://localhost:8080/;
    }
}

含义说明:

  • 客户端访问 /api/*
  • Nginx 将请求转发给 http://localhost:8080
  • 后端无需关心前端访问方式

2. 请求路径的转发规则(重点)

这是初学者最容易踩坑的地方。

情况一:proxy_pass 以 / 结尾

location /api/ {
    proxy_pass http://localhost:8080/;
}

请求示例:

/api/user/list

转发结果:

http://localhost:8080/user/list

情况二:proxy_pass 不以 / 结尾

location /api/ {
    proxy_pass http://localhost:8080;
}

转发结果:

http://localhost:8080/api/user/list

实际开发中:

  • 大多数情况下推荐以 / 结尾
  • 更符合后端接口设计习惯

三、企业级反向代理标准配置

仅仅能转发请求还不够,企业项目中还需要处理请求头、IP 等信息。


1. 必须添加的 proxy_set_header

location /api/ {
    proxy_pass http://localhost:8080/;

    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

作用说明:

  • Host:保持原始域名
  • X-Real-IP:获取客户端真实 IP
  • X-Forwarded-For:多级代理下的真实 IP 链

如果不配置这些,后端日志中可能只能看到 Nginx 的 IP。


2. 完整可用的反向代理模板

server {
    listen 80;
    server_name example.com;

    location /api/ {
        proxy_pass http://127.0.0.1:8080/;

        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_connect_timeout 5s;
        proxy_read_timeout 60s;
        proxy_send_timeout 60s;
    }
}

这是一份可以直接用于生产环境的基础配置模板


四、反向代理在前后端分离项目中的实战

1. 典型前后端分离架构



2. 前端请求方式

前端代码中只需写:

axios.get('/api/user/list')

优点:

  1. 不需要关心后端地址
  2. 不存在跨域问题
  3. 开发、测试、生产环境统一

3. Nginx 同时处理静态资源与接口

server {
    listen 80;
    server_name localhost;

    location / {
        root /usr/share/nginx/html;
        index index.html;
        try_files $uri $uri/ /index.html;
    }

    location /api/ {
        proxy_pass http://localhost:8080/;
    }
}

这就是动静分离 + 反向代理的典型组合。


五、反向代理与负载均衡的结合

反向代理是负载均衡的前提。


1. 定义后端服务器集群

upstream api_backend {
    server 127.0.0.1:8081;
    server 127.0.0.1:8082;
}

2. 使用 upstream 进行反向代理

location /api/ {
    proxy_pass http://api_backend;
}

Nginx 会自动将请求分发到不同的后端服务器。


六、反向代理常见问题与排查思路

1. 访问 404

重点检查:

  • location 是否匹配
  • proxy_pass 路径是否正确
  • 后端接口路径是否一致

2. 前端接口访问异常

优先排查:

  1. Nginx 是否 reload
  2. 后端服务是否正常启动
  3. error.log 日志内容

3. 修改配置后不生效

正确流程必须是:

nginx -t
nginx -s reload

七、总结

反向代理是 Nginx 最核心、最常用的能力之一,也是企业级 Web 架构的基础设施。

可以用一句话总结:

Nginx 反向代理通过统一入口转发请求,隐藏后端服务,实现前后端解耦,并为负载均衡和高可用架构提供基础支撑。


阅读原文:原文链接


该文章在 2026/2/14 17:33:55 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2026 ClickSun All Rights Reserved