nginx 实现多域名共用同一套 java 后端集群,核心是通过 server 块按 host 头路由、复用统一 upstream 池(如 java_backend),并透传 $host 等头信息供 java 层识别域名;需配置负载均衡策略、健康检查及 https sni 证书。

用 Nginx 实现多域名共用同一套 Java 后端服务集群,核心在于「反向代理 + 虚拟主机 + 统一 upstream」。不需要为每个域名单独部署 Java 应用,只需让 Nginx 根据 Host 头 区分请求来源,并统一转发到后端 Java 集群(如多个 Tomcat 或 Spring Boot 实例),由 Java 应用自身处理多租户或域名逻辑(例如通过 request.getServerName() 判断)。
配置统一的 upstream 服务池
在 /etc/nginx/nginx.conf 或 /etc/nginx/conf.d/upstream.conf 中定义后端 Java 集群节点,支持负载均衡与健康检查:
- 使用
upstream块声明一个逻辑名称(如java_backend),列出所有 Java 服务地址和端口 - 建议启用
ip_hash或least_conn策略,避免 session 不一致问题(若未做分布式 session) - 可添加
max_fails=2 fail_timeout=30s实现基础健康探测
示例:
upstream java_backend {ip_hash;
server 192.168.1.10:8080;
server 192.168.1.11:8080;
server 192.168.1.12:8080;
}
为每个域名单独写 server 块,复用同一 upstream
每个 server 块监听 80(或 443),用 server_name 指定对应域名,但 proxy_pass 全部指向同一个 upstream 名称:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
- 保持 Java 后端无感知:所有请求都走相同路径(如
/api/、/),Java 层自行解析 Host 或请求头做路由 - 若需透传原始域名,务必加
proxy_set_header Host $host;,否则 Java 收到的是localhost或 IP - 推荐统一设置
X-Forwarded-For和X-Real-IP,便于 Java 日志与风控识别真实客户端
示例(两个域名):
server {listen 80;
server_name shop.example.com;
location / {
proxy_pass http://java_backend;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
server {
listen 80;
server_name api.example.com;
location / {
proxy_pass http://java_backend;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
HTTPS 场景下注意证书与 SNI
若多个域名都需要 HTTPS,Nginx 必须为每个 server 块配置独立 SSL 证书(支持 SNI):
- 不能共用一个证书文件(除非是泛域名证书或 SAN 证书包含全部域名)
- 每个
server块内添加ssl_certificate和ssl_certificate_key - Java 后端无需处理 HTTPS 解密,仍接收 HTTP 请求(Nginx 完成 TLS 终结)
Java 应用层适配建议
Nginx 只负责转发,真正区分域名行为需由 Java 代码完成:
- 在 Controller 或 Filter 中读取
HttpServletRequest.getServerName()获取原始域名 - 根据域名动态加载配置、切换数据库 schema、渲染不同品牌页面等
- 若使用 Spring Cloud Gateway 或 Zuul,也可将多域名路由逻辑前移到网关层,但 Nginx 方案更轻量、更稳定
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










