上一篇 下一篇 分享链接 返回 返回顶部

快速上手Nginx反向代理,附完整配置代码

发布人:华太云团队 发布时间:2 天前 阅读量:6250

快速上手 Nginx 反向代理,附完整配置代码

Nginx 作为高性能的 Web 服务器和反向代理服务器,被广泛用于请求分发、负载均衡、隐藏真实服务器、HTTPS 部署等场景。本文用最通俗的语言,带你从零快速上手 Nginx 反向代理,直接复制配置即可使用。

一、什么是反向代理?

简单理解:

  • 正向代理:代理客户端,帮你访问外部资源(如科学上网)。
  • 反向代理:代理服务端,用户访问 Nginx,Nginx 再把请求转发给后台真实服务器,用户完全感知不到后端存在。

核心作用:

  • 隐藏后端服务 IP,提高安全性
  • 统一入口,方便管理多服务
  • 实现负载均衡
  • 支持 HTTPS、缓存、压缩、限流等增强功能

二、安装 Nginx(极简命令)

CentOS/RHEL

yum install -y nginx
systemctl start nginx
systemctl enable nginx

Ubuntu/Debian

apt update
apt install -y nginx
systemctl start nginx
systemctl enable nginx

安装完成后,浏览器访问服务器 IP,看到 Nginx 欢迎页即成功。

三、Nginx 反向代理核心配置

Nginx 配置默认路径:

  • /etc/nginx/nginx.conf(主配置)
  • /etc/nginx/conf.d/*.conf(子配置,推荐在这里写)

1. 最简单反向代理:转发到单个后端服务

新建配置:/etc/nginx/conf.d/proxy.conf

server {
    listen 80;
    server_name yourdomain.com; # 你的域名或IP

    # 反向代理所有请求到后端服务
    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 X-Forwarded-Proto $scheme;
    }
}

作用:访问 yourdomain.com → Nginx → 转发到 127.0.0.1:8080

2. 路径区分代理:不同路径转发到不同服务

server {
    listen 80;
    server_name yourdomain.com;

    # 前台页面
    location / {
        proxy_pass http://127.0.0.1:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }

    # 接口服务
    location /api/ {
        proxy_pass http://127.0.0.1:9090/; # 末尾 / 表示去掉 /api 前缀转发
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }

    # 后台管理
    location /admin/ {
        proxy_pass http://127.0.0.1:7070/;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

3. 带负载均衡的反向代理(最常用)

# 定义后端服务集群
upstream backend_servers {
    server 127.0.0.1:8080;
    server 127.0.0.1:8081;
    server 127.0.0.1:8082;
    # 可加权重 weight、备用 backup 等
}

server {
    listen 80;
    server_name yourdomain.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;
    }
}

4. 支持 WebSocket 的反向代理

server {
    listen 80;
    server_name yourdomain.com;

    location /ws/ {
        proxy_pass http://127.0.0.1:8787;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

四、完整生产可用配置(直接复制)

适用于:前端 + 后端 API + WebSocket + 安全请求头

upstream api_server {
    server 127.0.0.1:9090;
}

upstream web_server {
    server 127.0.0.1:80;
}

server {
    listen 80;
    server_name yourdomain.com;

    # 接口
    location /api/ {
        proxy_pass http://api_server/;
        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 60s;
        proxy_read_timeout 60s;
        proxy_send_timeout 60s;
    }

    # 网页
    location / {
        proxy_pass http://web_server;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }

    # WebSocket
    location /ws {
        proxy_pass http://api_server;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
}

五、配置后必须执行的命令

# 检查配置是否正确
nginx -t

# 平滑重启(不中断服务)
nginx -s reload

# 重启服务
systemctl restart nginx

六、常见问题排查

  • 访问 502:后端服务没启动或端口不通
  • 访问 403/404:路径配置错误、权限问题
  • 看不到真实 IP:没加 proxy_set_header X-Real-IP $remote_addr
  • 域名不生效:检查 DNS 解析、防火墙/安全组是否放通 80/443 端口

只要按本文配置复制修改域名和后端地址,就能立刻实现 Nginx 反向代理。无论是个人项目、企业后台、微服务网关,这套配置都能直接使用。

目录结构
全文
华太公众号 华太公众号
华太工程师 华太工程师
服务热线: 0530-5518618
投诉举报: 0530-5793567
电子邮箱: service@huataiyun.cn