You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot配置HTTPS后调用接口出现404 Not Found问题排查

问题分析与解决方案

你的核心问题是外部Tomcat部署Spring Boot WAR包时,重复配置了SSL且Spring Boot的配置无效,同时Tomcat的HTTPS端口未正确路由到你的应用,导致HTTPS请求返回404。以下是具体排查和修复步骤:


1. 移除Spring Boot中无效的SSL配置

当你将Spring Boot应用打包成WAR部署到外部Tomcat时,application.yml里的server.ssl和server.port配置是针对嵌入式Tomcat的,外部Tomcat完全不会读取这些配置,属于冗余配置,直接删除:

# 以下配置全部删除,无任何作用
server:
  ssl:
    key-store: classpath:keystore.p12
    key-store-password: password
    key-store-type: PKCS12
    key-alias: alias
    enabled: true
  port: 443

2. 修正Tomcat的HTTPS Connector配置

修改server.xml中的HTTPS连接器配置,确保协议和参数正确:

<Connector port="443" 
           protocol="org.apache.coyote.http11.Http11NioProtocol"
           maxThreads="150" 
           scheme="https" 
           secure="true"
           keystoreFile="conf/keystore.p12" 
           keystorePass="password" 
           keyAlias="alias"
           clientAuth="false" 
           sslProtocol="TLS" 
           sslEnabledProtocols="TLSv1.2,TLSv1.1"/>
  • 将protocol改为org.apache.coyote.http11.Http11NioProtocol:这是Tomcat推荐的NIO协议,性能更优且兼容性更好,避免旧HTTP/1.1协议的潜在问题。
  • 确认keystoreFile路径:conf/keystore.p12是Tomcat根目录相对路径,确保证书文件确实存在于conf文件夹下(你用HTTP访问443返回400,说明SSL已启用,路径大概率没问题)。

3. 确认应用部署与上下文路径

  • 你的WAR包必须重命名为ourectestschool.war并放在Tomcat的webapps目录下:这样应用的上下文路径就是/ourectestschool,和你8080端口访问的路径一致。如果WAR包名不是这个,比如是ROOT.war,上下文路径会为空,访问URL需要改为https://fortunenetworks.in:443/public/users/checkToken。
  • 检查server.xml中的Host配置:确保没有自定义Context节点干扰应用的上下文映射,默认配置即可:
<Host name="localhost"  appBase="webapps"
      unpackWARs="true" autoDeploy="true">
  <!-- 不要添加和你的应用相关的自定义Context配置 -->
</Host>

4. 查看Tomcat日志定位问题

查看Tomcatlogs目录下的以下日志文件:

  • catalina.out:检查是否有SSL证书加载失败、端口冲突等启动错误。
  • localhost_access_log.*.txt:查看HTTPS请求的记录,确认请求路径是否正确到达应用。
  • localhost.log:查看应用初始化过程中是否有异常。

5. 验证HTTPS基础连通性

先访问https://fortunenetworks.in:443:

  • 如果能看到Tomcat默认欢迎页,说明HTTPS配置正常,问题出在应用部署或上下文路径;
  • 如果看不到,说明Tomcat的SSL配置存在问题,需要重新检查证书和Connector参数。

补充说明

你用HTTP访问443端口返回400是正常行为:因为443端口配置了SSL,只能接收HTTPS请求,HTTP请求会被直接拒绝。而8080端口能正常访问,说明应用本身没有问题,问题完全出在Tomcat的HTTPS端口与应用的映射环节。

内容的提问来源于stack exchange,提问作者KJEjava48

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 18:52:36