本文详细讲解如何通过Nginx反向代理实现多端口站点统一访问,涵盖基础配置、负载均衡策略、SSL证书集成等核心技巧,并提供生产环境优化建议,帮助开发者高效管理分散服务。
一、反向代理与多端口站点的应用场景
当服务器运行多个独立服务(如Web应用、API服务、静态资源服务)时,这些服务往往监听不同端口。通过Nginx反向代理可以实现:
- 统一通过80/443端口对外暴露服务
- 隐藏后端服务器真实端口
- 实现请求的智能路由和负载均衡
- 集中管理SSL证书和访问控制
二、基础配置实现
以下示例展示如何将不同域名的请求代理到不同端口:
主配置文件引入子配置
include /etc/nginx/conf.d/.conf;
配置项1:代理API服务(3000端口)
server {
listen 80;
server_name api.yourdomain.com;
location / {
proxy_pass http://127.0.0.1:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
配置项2:代理前端应用(8080端口)
server {
listen 80;
server_name app.yourdomain.com;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
三、高级配置技巧
1. 基于路径的路由
server {
listen 80;
server_name yourdomain.com;
location /api/ {
proxy_pass http://127.0.0.1:3000/;
}
location /static/ {
proxy_pass http://127.0.0.1:8081/;
}
}
2. 负载均衡配置
upstream backend {
server 127.0.0.1:3000 weight=3;
server 127.0.0.1:3001;
server 127.0.0.1:3002 backup;
}
server {
location / {
proxy_pass http://backend;
}
}
3. WebSocket代理
location /ws/ {
proxy_pass http://127.0.0.1:4000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
四、性能优化建议
- 启用
proxy_buffering
减少后端服务器压力 - 配置
proxy_cache
缓存静态内容 - 使用
keepalive
维持后端连接 - 设置合理的
proxy_timeout
值
五、安全加固措施
- 配置SSL终止:在Nginx层统一处理HTTPS
- 设置
proxy_hide_header
隐藏敏感信息 - 通过
allow/deny
限制访问源IP - 定期检查Nginx漏洞并更新版本
通过以上配置,可以构建高性能、安全可靠的多端口服务代理架构。实际部署时建议结合日志监控和压力测试进行调优。
评论