在日常 Web 服务部署中,Nginx 是最常用的反向代理服务器之一。它不仅能将请求转发至后端服务,还支持 HTTPS 加密、多域名支持、头部处理等功能。本文将介绍如何:
- 使用 NGINX 手动配置反向代理
- 启用 HTTPS 访问
- 通过不同域名代理至不同服务(多站点配置)
- 使用图形化工具(Nginx Proxy Manager)简化配置过程
一、准备工作
安装 NGINX:
1
| sudo apt update && sudo apt install nginx
|
获取 SSL 证书(可使用 Let’s Encrypt 或自签证书)并放入:
1 2
| /etc/nginx/cert/cert.pem /etc/nginx/cert/key.pem
|
确认目标服务运行在本地,例如:
- Node.js 服务:
127.0.0.1:3000
- Flask 服务:
127.0.0.1:5000
- 面板服务:
127.0.0.1:8080
二、配置单个服务的反向代理
1. 创建配置文件
1 2
| cd /etc/nginx/sites-available sudo vim myproxy.conf
|
2. 示例配置(反代至 127.0.0.1:8080)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| server { listen 443 ssl http2; server_name sub1.example.com;
ssl_certificate /etc/nginx/cert/cert.pem; ssl_certificate_key /etc/nginx/cert/key.pem;
location / { 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_redirect off; proxy_pass http://127.0.0.1:8080; } }
|
三、配置多个域名代理至不同服务(多站点反代)
以下是多个 server 块分别代理至不同本地服务的示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
| server { listen 443 ssl http2; server_name node.example.com;
ssl_certificate /etc/nginx/cert/cert.pem; ssl_certificate_key /etc/nginx/cert/key.pem;
location / { proxy_pass http://127.0.0.1:3000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } }
server { listen 443 ssl http2; server_name flask.example.com;
ssl_certificate /etc/nginx/cert/cert.pem; ssl_certificate_key /etc/nginx/cert/key.pem;
location / { proxy_pass http://127.0.0.1:5000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } }
server { listen 443 ssl http2; server_name panel.example.com;
ssl_certificate /etc/nginx/cert/cert.pem; ssl_certificate_key /etc/nginx/cert/key.pem;
location / { proxy_pass http://127.0.0.1:8080; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } }
|
warning 确保 DNS 已将这些子域名解析至你服务器的公网 IP。
四、启用配置并重启 NGINX
1. 启用配置文件
1
| sudo ln -s /etc/nginx/sites-available/myproxy.conf /etc/nginx/sites-enabled/
|
2. 检查配置语法
3. 重载 NGINX
1
| sudo systemctl reload nginx
|
五、其他建议与补充
🔐 强制 HTTPS 重定向
若希望所有 HTTP 请求跳转到 HTTPS,可添加以下配置:
1 2 3 4 5
| server { listen 80; server_name your_domain.com; return 301 https://$host$request_uri; }
|
🛡️ 防火墙放行端口
1 2
| sudo ufw allow 443 sudo ufw allow 80
|
六、使用图形化工具简化反向代理配置
虽然使用 Nginx 手动配置反向代理很灵活,但对于新手或不想频繁手动修改配置文件的用户,推荐使用图形化管理工具:
✅ Nginx Proxy Manager(推荐)
- Web 界面配置域名、SSL 证书、转发地址等
- 支持 Let’s Encrypt 自动申请证书
- 可以管理多个反向代理规则
- 支持 Docker 部署
官网:https://nginxproxymanager.com
✅ 其他运维面板
七、小结
本文介绍了如何使用 NGINX 配置反向代理,内容涵盖:
- 基础反向代理配置
- HTTPS 证书接入
- 多域名转发至多个服务
- 图形化反代管理工具推荐
希望本文对你在部署多服务 Web 架构时有所帮助。如果需要一键部署脚本,欢迎留言获取。
1 2 3 4
| ---
如果你希望我再生成一份 `.md` 文件或自动上传到你的 Hexo 博客目录,我也可以帮你完成。需要吗?
|