
本文详解如何在 Windows 服务器上使用 Nginx 或 Apache 配置反向代理,将 monsite.com/applicant-api 和 monsite.com/approver-api 自动路由至不同端口的 Spring Boot 应用,彻底避免用户输入端口号。
本文详解如何在 windows 服务器上使用 nginx 或 apache 配置反向代理,将 `monsite.com/applicant-api` 和 `monsite.com/approver-api` 自动路由至不同端口的 spring boot 应用,彻底避免用户输入端口号。
在生产环境中,直接暴露非标准端口(如 8081、8082)不仅影响用户体验,还存在安全与 SEO 风险。理想架构应是:用户仅访问 https://monsite.com/applicant-api 或 https://monsite.com/approver-api,所有请求由统一入口(80/443 端口)接收,并由反向代理按路径智能分发至后端 Spring Boot 实例。这正是反向代理的核心价值——解耦入口与部署细节,提升可维护性与专业性。
✅ 推荐方案:Nginx(轻量、高效、Windows 支持良好)
Nginx 在 Windows 上运行稳定,配置简洁,是本场景的首选。以下是完整操作步骤:
ECTouch是上海商创网络科技有限公司推出的一套基于 PHP 和 MySQL 数据库构建的开源且易于使用的移动商城网店系统!应用于各种服务器平台的高效、快速和易于管理的网店解决方案,采用稳定的MVC框架开发,完美对接ecshop系统与模板堂众多模板,为中小企业提供最佳的移动电商解决方案。ECTouch程序源代码完全无加密。安装时只需将已集成的文件夹放进指定位置,通过浏览器访问一键安装,无需对已有
1. 下载并安装 Nginx(Windows 版)
- 访问 nginx.org 下载页,下载 Windows ZIP 包(如 nginx-1.26.0.zip);
- 解压至目录(例如 C:\nginx),无需安装,双击 nginx.exe 即可启动;
- 验证:访问 http://localhost,若显示 “Welcome to nginx!” 则运行正常。
2. 修改 conf/nginx.conf,添加反向代理配置
# 在 http { ... } 块内添加以下 server 配置
server {
listen 80;
server_name monsite.com;
# applicant-api 路径代理
location /applicant-api/ {
proxy_pass http://127.0.0.1:8081/;
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_set_header X-Forwarded-Proto $scheme;
# 修复 Spring Boot 中重定向 URL 的上下文路径问题
proxy_redirect / /applicant-api/;
}
# approver-api 路径代理
location /approver-api/ {
proxy_pass http://127.0.0.1:8082/;
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_set_header X-Forwarded-Proto $scheme;
proxy_redirect / /approver-api/;
}
# 可选:根路径返回友好提示或重定向
location / {
return 302 https://$server_name/applicant-api/;
}
}? 关键说明:
- proxy_pass 末尾的 / 至关重要:它会剥离匹配的路径前缀(如 /applicant-api/),再转发请求,避免后端收到重复路径;
- proxy_redirect 确保 Spring Boot 返回的 302 重定向响应中 Location 头仍保持对外一致的路径结构;
- 所有 proxy_set_header 语句确保后端应用能正确识别原始请求协议、客户端 IP 和 Host。
3. 启动与验证
- 运行 nginx -s reload(或先 nginx -s stop 再 start nginx)重载配置;
- 确保你的 Spring Boot JAR 已在后台运行(java -jar applicant.jar & java -jar approver.jar);
- 将域名 monsite.com 的 DNS A 记录指向服务器公网 IP(197.241.211.36);
- 浏览器访问 http://monsite.com/applicant-api/health,应返回 applicant 服务的健康检查结果。
⚠️ 注意事项与进阶建议
HTTPS 强制启用(生产必备):
在 server 块中新增 listen 443 ssl;,并配置证书(推荐使用 Let’s Encrypt + certbot,Windows 可通过 WSL 或第三方工具获取)。Nginx 统一处理 SSL 终止,后端仍走 HTTP,大幅简化 Spring Boot 安全配置。-
Spring Boot 配置优化:
在 application.yml 中显式声明上下文路径与代理感知:server: servlet: context-path: /applicant-api # 与 Nginx location 严格对应 management: endpoints: web: base-path: /actuator # 启用 X-Forwarded-* 头解析(适配反向代理) server: forward-headers-strategy: native -
Apache 替代方案(如必须使用):
启用 mod_proxy 和 mod_proxy_http 模块,核心配置类似:<VirtualHost *:80> ServerName monsite.com ProxyPreserveHost On ProxyRequests Off ProxyPass "/applicant-api/" "http://127.0.0.1:8081/" ProxyPassReverse "/applicant-api/" "http://127.0.0.1:8081/" ProxyPass "/approver-api/" "http://127.0.0.1:8082/" ProxyPassReverse "/approver-api/" "http://127.0.0.1:8082/" </VirtualHost> Windows 服务化(可选):
使用 nssm.exe 将 Nginx 注册为 Windows 服务,实现开机自启与进程守护。
通过以上配置,你成功将两个独立的 Spring Boot 应用“融合”为单一域名下的逻辑服务,既满足了用户体验要求(零端口输入),又为后续扩展(如负载均衡、API 网关、WAF 集成)打下坚实基础。反向代理不是权宜之计,而是现代 Web 架构的标准实践。









