我们已经用 Vert.x 4 重新编写了我们的 web 服务,我们非常满意。在将它们投入生产之前,我们希望保护它们并且我们正在尝试启用 https。这是主要的垂直:
public class MainVerticle extends AbstractVerticle {
@Override
public void start() throws Exception {
//Deploy the HTTP server
vertx.deployVerticle(
"com.albertomiola.equations.http.HttpServerVerticle",
new DeploymentOptions().setInstances(3)
);
}
// I use this only in IntelliJ Idea because when I hit "Run" the build starts
public static void main(String[] args) {
Launcher.executeCommand("run", MainVerticle.class.getName());
}
}
这是 HTTP 服务器 Verticle 代码中最相关的部分:
public class HttpServerVerticle extends AbstractVerticle {
@Override
public void start(Promise<Void> startPromise) throws Exception {
var options = new HttpServerOptions();
options.setPort(443)
.setSSl(true)
.setPemTrustOptions(...)
.setPemKeyCertOptions(...);
var server = vertx.createHttpServer(options);
var router = Router.router(vertx);
//Start
server
.requestHandler(router)
.listen(portNumber, ar -> {
if (ar.succeeded()) {
startPromise.complete();
} else {
startPromise.fail(ar.cause());
}
});
}
}
上面的代码可以正常工作,因为我的网站可以通过https://website.it和https://www.website.it访问 (使用letsencrypt 证书)。
问题是当我尝试访问http://website.it或http://www.website.it时它不起作用(这意味着我看不到主页,因为服务器无法访问)。
如何将http://website.it重定向到 https//website.it?
我用谷歌搜索了很多,我设法找到的是:
- 这个vertx 示例像我一样设置 HTTPS,但它没有提到重定向
- 这个SO question 似乎告诉我该怎么做,但我不明白该怎么做,我不确定该设置是否必须进入 HttpServerOption 对象
也许是我的 https 配置错误?我在 IntelliJ IDEA(Maven 构建)和 Vert.x 4 最新版本上使用 Java 11。谢谢