Spring Boot部署时如何设置根路径自动跳转至配置的context-path
解决方案
你可以根据实际场景选择以下任意一种方案实现根路径自动跳转:
方案1:Docker层新增Nginx反向代理实现重定向(无代码侵入,推荐)
不需要修改现有Spring Boot业务代码,仅调整Docker配置即可:
- 在项目根目录新增
nginx.conf配置文件,内容如下:
events {} http { server { listen 80; # 根路径直接重定向到/api location = / { return 301 /api; } # 转发/api前缀的请求到Spring Boot服务 location /api { proxy_pass http://127.0.0.1:5000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } } }
- 修改Dockerfile,新增Nginx安装和启动逻辑:
FROM openjdk:8-jdk-alpine # 安装Nginx RUN apk add --no-cache nginx # 复制自定义Nginx配置 COPY nginx.conf /etc/nginx/nginx.conf # 复制应用Jar包 COPY /target/RestApi-0.0.1-SNAPSHOT.jar RestApi-0.0.1-SNAPSHOT.jar EXPOSE 80 5000 # 同时启动Nginx和Spring Boot服务 ENTRYPOINT ["sh", "-c", "nginx && java -jar /RestApi-0.0.1-SNAPSHOT.jar"]
- 修改
docker-compose.yml的端口映射规则,将对外暴露端口改为80:
version: "1.0" services: api_service: build: . restart: always ports: - 80:80
修改完成后重新部署,访问根路径会自动永久重定向到/api路径。
方案2:调整Spring Boot配置,移除context-path统一接口前缀
如果不想额外引入Nginx,可以调整Spring Boot配置实现:
- 删除
application.properties中的server.servlet.context-path=/api配置项 - 新增Web配置类,统一添加接口前缀和根路径重定向规则:
@Configuration public class WebConfig implements WebMvcConfigurer { // *该配置仅支持Spring Boot 2.1及以上版本 @Override public void configurePathMatch(PathMatchConfigurer configurer) { // 给所有Controller接口统一添加/api前缀,不影响原有接口逻辑 configurer.addPathPrefix("/api", c -> true); } // 配置根路径自动跳转到/api @Override public void addViewControllers(ViewControllerRegistry registry) { registry.addViewController("/").setViewName("redirect:/api"); } }
- 将原静态资源文件从
/static目录移动到/static/api目录下,保证/api路径能正常加载index.html
方案3:直接在AWS Elastic Beanstalk配置重定向规则
如果不想修改项目代码和Docker配置,可以直接在AWS控制台配置规则:
- 进入对应Elastic Beanstalk环境的配置页面,找到「软件」配置栏
- 找到重定向规则配置项(不同环境类型路径略有差异,部分环境在「负载均衡」配置栏下)
- 添加规则:请求路径匹配
/时,返回301重定向到/api路径
内容的提问来源于stack exchange,提问作者kodazys
相关产品推荐
相关产品推荐

