Nginx反向代理配置教程:零基础也能轻松上手
为什么你需要了解Nginx反向代理
Nginx反向代理是让一台服务器接收外部请求,然后转发给内部其他服务(比如本地的Web应用或API)。
对于零基础用户来说,你只需要知道它能帮你:
- 隐藏后端真实IP,提升安全性
- 实现负载均衡,分散流量压力
- 统一管理多个网站或应用
本文会从零开始,带你在Linux服务器上部署和配置Nginx反向代理。
准备工作:你需要什么
- 一台Linux服务器(推荐Ubuntu 20.04/22.04或CentOS 7+)。
- 一个已解析的域名(可选但推荐,因为直接用IP也能代理端口服务)。
- SSH登录工具(Windows用PuTTY或Windows Terminal,macOS/Linux直接用终端)。
- 后端服务(比如一个运行在
localhost:3000的Node.js应用,或者另一个端口上的Nginx实例)。
检查环境:登录服务器后,先更新包管理器:
sudo apt update && sudo apt upgrade -y # Ubuntu/Debian
sudo yum update -y # CentOS
安装Nginx并配置反向代理
第一步:安装Nginx
sudo apt install nginx -y # Ubuntu/Debian
sudo yum install nginx -y # CentOS
安装完成后启动并设置开机自启:
sudo systemctl start nginx
sudo systemctl enable nginx
第二步:配置反向代理规则
Nginx的配置文件通常位于 /etc/nginx/sites-available/(Ubuntu)或 /etc/nginx/conf.d/(CentOS)。
我们创建一个新文件:
sudo nano /etc/nginx/sites-available/myapp # Ubuntu
# 或者
sudo nano /etc/nginx/conf.d/myapp.conf # CentOS
写入以下内容(假设后端服务运行在 127.0.0.1:3000):
server {
listen 80;
server_name yourdomain.com; # 替换为你的域名或IP
location / {
proxy_pass http://127.0.0.1:3000;
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_pass 指定要转发的目标地址。其他几行设置客户端的真实信息,让后端能获取原始请求头。
第三步:启用配置并重启
Ubuntu需要创建软链接到 sites-enabled:
sudo ln -s /etc/nginx/sites-available/myapp /etc/nginx/sites-enabled/
测试配置是否有语法错误:
sudo nginx -t
如果输出 syntax is okay 和 test is successful,就重启Nginx:
sudo systemctl restart nginx
避坑指南:新手常见问题
Q1:502 Bad Gateway
- 原因:后端服务未启动或端口错误。
- 解决:检查后端进程是否运行,确认
proxy_pass中的IP和端口正确。
Q2:配置修改后不生效
- 原因:忘记重启Nginx或启用了错误的配置文件。
- 解决:执行
sudo systemctl reload nginx通过热重载生效,并再次运行nginx -t检查。
Q3:静态文件无法加载
- 如果后端是Web应用,需要额外添加静态文件处理。反向代理默认转发所有请求,但你可以用
root指令指定静态资源目录。如果只是纯API反向代理,忽略此条。
Q4:域名无法访问
- 检查域名DNS解析是否指向服务器IP,以及服务器防火墙是否开放80端口:
sudo ufw allow 80/tcp # Ubuntu
sudo firewall-cmd --add-service=http --permanent # CentOS
sudo firewall-cmd --reload
效果验证:确认反向代理正常工作
- 浏览器访问:在地址栏输入
http://yourdomain.com,如果看到后端应用的内容(而不是Nginx欢迎页),说明反向代理成功。 - 命令行验证:在服务器或本地执行:
curl -I http://yourdomain.com
查看响应头中的 Server 字段,如果返回后端服务相关信息,说明流量已经透传。
- 查看日志:
sudo tail -f /var/log/nginx/access.log
访问一次,你会看到请求来源IP等记录,确认是Nginx在代理。
总结
本文从零基础出发,讲解了Nginx反向代理的配置流程:安装Nginx、编写代理规则、处理常见错误并验证效果。
如果你正在处理Nginx反向代理,建议先按本文步骤完整执行,再根据自己的环境做微调;
遇到异常时优先回看避坑和高频问题部分。
掌握这个技能后,你就能轻松管理多个后端服务了。