问题背景
在实际部署中,我们经常遇到这样的困境:
- 应用内部端口被其他服务(如 Docker 容器)占用,需要频繁更换
- 端口变动后,需要通知所有用户更新访问地址
- 多环境部署时,端口管理混乱
核心诉求:无论内部端口如何变化,用户始终通过一个固定地址访问。
解决方案
使用Nginx 反向代理,将固定的外部端口代理到可变的内部端口。
用户 → 固定端口(3001) → Nginx → 内部端口(可变) → 应用配置示例
1. Nginx 配置
创建配置文件/etc/nginx/conf.d/myapp.conf:
server { listen 3001; # 固定的外部端口 server_name _; location / { proxy_pass http://127.0.0.1:3002; # 内部端口,可随时修改 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; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_cach