Мы переписали наши веб-сервисы с помощью Vert.x 4 и более чем довольны. Прежде чем запускать их в производство, мы хотим защитить их и пытаемся включить 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-сервера:
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, как я, но не упоминает перенаправление
- этот ТАК вопрос, который, кажется, говорит мне, что делать, но я не могу понять, что делать, и я не уверен, должна ли эта настройка идти в объекте HttpServerOption
Может быть, моя конфигурация https неверна? Я использую Java 11 в IntelliJ IDEA (сборка Maven) и последней версии Vert.x 4. Спасибо