如何在 Java spring 启动时打开端口 80 (HTTP) 和 433 (HTTPS)?

How to open port 80 (HTTP) and 433 (HTTPS) in Java spring boot?

我想为 http 打开 80 端口,为 https 打开 433 端口。 80端口应该重定向到433,我把application.properties中的服务器端口设置为80端口:

server.port=80

为了重定向,我按照官方 spring 文档创建了这个小 class:

public class HTTPSRedirector {

    @Bean
    SecurityWebFilterChain springSecurityFilterChain(ServerHttpSecurity http) {
        http.redirectToHttps();
        return http.build();
    }
}

但是现在服务器超时,当我尝试通过以下命令使用 curl 时:

curl -v http://www.example.com/

我收到 Bad request 响应,因为 SSL/TLS 已启用。如果我尝试像这样 ping / 联系 https 端口:

curl -v https://www.example.com/

然后我收到端口未打开且连接被拒绝的消息。如何在我的 Java spring 项目中同时打开端口 80 和 433?

这就是我最终修复它的方式:

我使用了问题中列出的 bean。此 bean 将所有 http 请求重定向到 https。

此外,我将服务器端口设置为:

server.port=443

这是 https 的默认端口。通过这两项更改,服务器工作正常,一切都是 https。