端口隔离是内网多业务部署最省事可控的方式——不依赖DNS、hosts或证书,仅靠端口不冲突即可实现天然独立;适用于医院/企业内网及开发测试环境,支持快速验证、独立调参与清晰排障。

用端口做隔离,是内网多业务部署最省事、最可控的方式——不碰 DNS,不改 hosts,不配证书,只要端口不冲突,每个服务就天然独立。
为什么端口隔离特别适合内网多业务场景
医院、企业内网、开发测试环境里,常遇到这些情况:
- 多个系统共用一台前置机或测试服务器,但彼此不能互相干扰
- 没有统一内网 DNS,也不愿逐台改 hosts 文件
- 要快速验证新版本,又不想影响线上稳定服务
- 某些接口响应慢(如 HIS 查询)、上传大(如病历 PDF),需要单独调参
端口方案直接绕过域名解析环节,靠 listen 指令硬隔离,逻辑清晰,出问题一眼就能定位到哪个 server 块、哪个端口、哪条路径。
基础配置:一个端口对应一个业务
在 /etc/nginx/conf.d/ 下新建配置文件,比如 hr-test.conf:
server {
listen 8081;
server_name localhost;
root /var/www/hr-v2.3-test;
index index.html;
location /api/ {
proxy_pass http://127.0.0.1:3001;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
- 每个业务独占一个端口(如 8081、8082、8090),避免监听冲突
- server_name 写 localhost 或留空即可,不依赖 Host 头匹配
- 静态资源走 root,后端服务走 proxy_pass,两者可混用
- 关键 header(Host、X-Real-IP)必须透传,否则后端可能跳转错乱或取不到真实 IP
进阶实践:让端口配置真正可维护
人工改端口容易出错,建议把端口、路径、版本三者绑定起来,由脚本驱动:
- 用模板生成配置:变量如 PORT=8085、APP_ROOT=/var/www/myapp-canary,配合 envsubst 渲染
- 部署时自动创建带时间戳或 Git SHA 的目录(如 /var/www/hr-20260420-abc123),避免覆盖
- 配置切换走原子操作:生成新 conf → nginx -t 校验 → ln -sf 切软链 → nginx -s reload
- 端口池固定在 8080–8099,CI 流水线按 PR 编号映射(如 PORT=$((8080 + $PR_NUMBER % 20))),方便并行测试
安全与稳定性补充要点
内网虽不对外,但逻辑隔离不等于可以忽略防护:
- 限制 client_max_body_size(例如 50M),防止大文件上传拖垮服务
- 适当调高 proxy_read_timeout(如 300s),适配医疗、财务类长耗时接口
- 所有 location 块尽量写明确前缀(如 location /api/hr/),避免 location / 通配劫持其他服务
- 日志格式中加入 $http_x_forwarded_for 和 $remote_addr,便于审计溯源











