https 在 swisscom CloudFoundry 上无法按预期工作



我有一个非常简单的弹簧启动应用程序,它作为一个控制器:

@RestController
public class HomeController {
@GetMapping(path = "/")
public String getHome() {
return "Hello world";
}
}

以及以下安全配置以强制实施 HTTPS:

@Configuration
public class SslWebSecurityConfigurerAdapter extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
// require https!
http.requiresChannel().anyRequest().requiresSecure();
}
}

application.properties如下所示:

server.tomcat.remote-ip-header=x-forwarded-for
server.tomcat.protocol-header=x-forwarded-proto

Maven 依赖项是:

<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
</dependencies>

manifest.mf如下所示:

applications:
- name: jt-demo
memory: 1G
instances: 1
path: ./target/demo.jar
buildpacks: 
- https://github.com/cloudfoundry/java-buildpack#v4.17.2
env:
JAVA_OPTS: -Djava.security.egd=file:///dev/urandom
JBP_CONFIG_OPEN_JDK_JRE: '{jre: { version: 11.+ }}'

我通过以下命令在两个不同的 cloudfoundry 提供商(pivotal 和 swisscom)上安装该应用程序:cf push jt-demo -f manifest.yml

当我在 https://run.pivotal.io 上运行此应用程序并通过https访问它时,它按预期工作,浏览器向我显示预期的"Hello world"。但是当我在 swisscom 开发人员应用程序云 (https://developer.swisscom.com) 上运行它时,我得到了ERR_TOO_MANY_REDIRECTS(对许多 302)。

似乎这两个Cloudfoundry环境处理HTTPS的方式不同。

我知道 pivotal 运行 cf api 版本 2.138.0,而 swisscom 有 2.136.0 - 但我不希望这是原因。

如何修复 swisscom 开发的应用程序/配置?

我终于在这里找到了问题的答案 瑞士电信应用程序云更新后的春季启动HTTPS重定向循环

https://docs.developer.swisscom.com/devguide-sc/buildpacks/java/caveats.html

不得不为瑞士电信配置server.tomcat.internal-proxies有点出乎意料...

相关内容

  • 没有找到相关文章

最新更新