在 Debian 上使用 Nginx 做反向代理 是非常常见的做法,通常用于把请求转发到后端服务(如 Node.js、Python、Java、Docker 等)。
下面从 安装 → 配置 → 示例 → 常用优化 一步步说明。
sudo apt update
sudo apt install nginx -y
启动并设置开机自启:
sudo systemctl enable nginx
sudo systemctl start nginx
确认状态:
sudo systemctl status nginx
反向代理核心配置指令:
proxy_pass http://后端地址;
例如:
http://example.comhttp://127.0.0.1:3000编辑站点配置:
sudo nano /etc/nginx/sites-available/example.com
配置内容:
server {
listen 80;
server_name example.com www.example.com;
location / {
proxy_pass http://127.0.0.1:3000;
proxy_http_version 1.1;
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;
}
}
启用站点:
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
测试并重载:
sudo nginx -t
sudo systemctl reload nginx
如果后端在 Docker 中运行(如容器端口 8080):
location / {
proxy_pass http://127.0.0.1:8080;
}
或使用 Docker 网络 IP(不推荐直接用容器 IP)。
sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d example.com -d www.example.com
Certbot 会自动修改 Nginx 配置并启用 443。
location /api/ {
proxy_pass http://127.0.0.1:5000/;
}
⚠️ 注意 proxy_pass 末尾的 / 会影响路径拼接。
location /ws/ {
proxy_pass http://127.0.0.1:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
upstream backend {
server 127.0.0.1:3000;
server 127.0.0.1:3001;
}
server {
location / {
proxy_pass http://backend;
}
}
proxy_pass 地址错误检查:
curl http://127.0.0.1:3000
location 是否匹配/var/log/nginx/access.log
/var/log/nginx/error.log
server {
listen 80;
server_name yourdomain.com;
location / {
proxy_pass http://127.0.0.1:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
如果你愿意,可以告诉我:
/api)我可以直接帮你写一份 可用配置。