快速上手 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 反向代理。无论是个人项目、企业后台、微服务网关,这套配置都能直接使用。