LOGO 首页 OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 技术文档 其他文档  
 
网站管理员

Nginx反向代理这5种配置,负载均衡+HTTPS一站搞定

admin
2026年11月10日 21:0 本文热度 46

💥 项目要上线了,前端一个域名、后端三个服务实例、还要配HTTPS、WebSocket也得支持——运维同事请假了,这些配置全落到你头上。打开Nginx配置文件,看着一堆指令直接懵了。

💥 Nginx是后端工程师必须掌握的运维技能,反向代理、负载均衡、HTTPS配置、动静分离这些场景几乎每个项目都会遇到。不需要你精通运维,但基本的配置必须会写、能改、敢上线。

💥 今天把生产环境最常用的5种Nginx配置场景整理出来,每种都附带完整可用的配置文件,直接复制改改域名和IP就能用。看完这篇,运维不在你也能搞定。

一、场景1:简单反向代理(最基础)

把域名请求转发到后端服务,这是Nginx最基本的用法。用户访问 api.example.com,Nginx把请求转发到本地的8080端口。

# /etc/nginx/conf.d/api.conf
server{
    listen 80;
    server_name api.example.com;

    location/ {
        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_set_header必须加

不加这三个头信息,后端拿到的客户端IP全是127.0.0.1,日志记录、限流、地域判断全废了。生产环境这三行是标配,别漏掉。

二、场景2:负载均衡(多实例轮询)

后端部署了多个实例,Nginx负责把请求均匀分发到各个实例上。支持三种策略:轮询(默认)、权重、ip_hash。

# 定义上游服务集群
upstream backend_cluster {
    # 权重分配:配置高的服务器多分配请求
    server 192.168.1.10:8080 weight=3;
    server 192.168.1.11:8080 weight=2;
    server 192.168.1.12:8080 weight=1;

    # 健康检查:连续3次失败标记为不可用,30秒后重试
    server 192.168.1.13:8080 max_fails=3 fail_timeout=30s;
}

server{
    listen 80;
    server_name api.example.com;

    location/ {
        proxy_pass http://backend_cluster;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

⚠️ 三种负载均衡策略对比

✅ 轮询(默认):请求依次分配给每个实例,适合实例配置相同的情况

✅ 权重(weight):配置高的服务器多分请求,适合实例性能不同的场景

✅ ip_hash:同一IP的请求固定打到同一实例,适合需要Session保持的老项目(新项目建议用Redis存Session,不需要ip_hash)

三、场景3:HTTPS配置(SSL证书)

现在所有网站都要求HTTPS,Nginx配置SSL证书非常简单。用Let's Encrypt可以免费申请证书,也可以用公司购买的证书。

# HTTP自动跳转HTTPS
server{
    listen 80;
    server_name www.example.com;
    return 301 https://$host$request_uri;
}

# HTTPS主配置
server{
    listen 443 ssl http2;
    server_name www.example.com;

    # SSL证书路径
    ssl_certificate /etc/nginx/ssl/fullchain.pem;
    ssl_certificate_key /etc/nginx/ssl/privkey.pem;

    # SSL安全配置(防漏洞攻击)
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers on;

    location/ {
        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-Proto $scheme;
    }
}

🚨 安全提醒

ssl_protocols 只保留TLSv1.2和TLSv1.3,TLSv1.0和1.1已经有已知漏洞,必须禁用。后端代码里获取请求协议要用 X-Forwarded-Proto 头,否则SpringBoot里判断HTTPS会失效。

四、场景4:WebSocket代理

项目里用到了WebSocket做实时推送(比如在线客服、消息通知),Nginx默认不支持WebSocket的协议升级,需要额外配置。

map $http_upgrade $connection_upgrade {
    default upgrade;
    ''      close;
}

server{
    listen 443 ssl;
    server_name ws.example.com;

    ssl_certificate /etc/nginx/ssl/fullchain.pem;
    ssl_certificate_key /etc/nginx/ssl/privkey.pem;

    location /ws {
        proxy_pass http://127.0.0.1:8080;
        # WebSocket关键配置
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection $connection_upgrade;
        # 超时时间:WebSocket长连接必须设长一些
        proxy_read_timeout 3600s;
    }
}

💡 WebSocket配置要点

核心是 Upgrade 和 Connection 这两个头,告诉Nginx做协议升级。proxy_read_timeout 必须设置足够长(比如3600秒),否则空闲连接会被Nginx主动断开,WebSocket就断了。

五、场景5:动静分离

前端静态文件(HTML、CSS、JS、图片)直接由Nginx返回,动态请求才转发到后端。这样能大幅减轻后端压力,提升响应速度。

server {
    listen 80;
    server_name www.example.com;

    # 静态文件:Nginx直接返回
    location /static/ {
        alias /var/www/static/;
        # 开启gzip压缩
        gzip on;
        gzip_types text/css application/javascript image/png;
        # 浏览器缓存7天
        expires 7d;
    }

    # 动态请求:转发到后端
    location /api/ {
        proxy_pass http://127.0.0.1:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }

    # 前端SPA路由:全部返回index.html
    location / {
        root /var/www/dist;
        try_files $uri $uri/ /index.html;
    }
}

💡 动静分离的好处

静态文件Nginx处理性能是后端的10倍以上;开启gzip压缩能减少60%以上的传输量;设置浏览器缓存后,二次访问几乎零请求。前端Vue/React打包后的dist目录直接丢给Nginx,完美。

六、5种配置场景全景对比

一张表看清每种配置的适用场景和复杂度:

配置场景
核心功能
适用场景
复杂度
关键指令
简单反向代理
域名转发到后端
单体应用、开发环境
⭐
proxy_pass
负载均衡
多实例请求分发
微服务、高可用部署
⭐⭐
upstream
HTTPS配置
SSL加密+HTTP跳转
所有生产环境
⭐⭐
ssl_certificate
WebSocket代理
长连接协议升级
实时推送、在线客服
⭐⭐⭐
Upgrade/Connection
动静分离
静态文件+动态请求分流
前后端分离项目
⭐⭐⭐
location+alias

🎯 Nginx配置上线前必查清单

1️⃣ 配置完先测语法

每次改完配置文件,先执行 nginx -t 检查语法,确认没问题后再执行 nginx -s reload 热重载。不要直接restart,热重载不会断开现有连接。

2️⃣ 生产环境HTTPS是标配

HTTP跳转HTTPS的301重定向必须配,否则用户手动输入http开头会看到不安全提示。SSL证书用Let's Encrypt免费申请,每90天自动续签。

3️⃣ 日志和监控不能少

配置access_log和error_log路径,方便排查问题。生产环境建议加上 log_format 自定义日志格式,记录响应时间、上游服务器地址等关键信息。


阅读原文:原文链接


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