Веб-сервер undertow не привязан к удаленному адресу

Я тестирую веб-сервер undertow 2.0.0.Alpha1. Когда я запускаю его локально, он работает и возвращается Hello World когда я иду в localhost:80, Затем я развертываю веб-сервер на удаленном сервере и захожу на remote_ip:80 но я не получил ответ. Если я бегу curl -i -X GET http://localhost:80 на удаленном сервере, то я получаю Hello World обратно тоже. Таким образом, сервер определенно работает, но по какой-то причине он просто недоступен через удаленный IP-адрес. Если я пытаюсь установить имя хоста в качестве удаленного IP в коде (т.е. .addHttpListener(80, "remote.ip")) тогда я получаю BindException,

import io.undertow.Undertow;
import io.undertow.server.HttpHandler;
import io.undertow.server.HttpServerExchange;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;

public class HelloWorldServer {

    public static void main(final String[] args) {
        try {
            Runtime.getRuntime().exec("sudo fuser -k 80/tcp");
        } catch (IOException ex) {
            Logger.getLogger(HelloWorldServer.class.getName()).log(Level.SEVERE, null, ex);
        }
        Undertow server = Undertow.builder()
                .addHttpListener(80, null)
                .setHandler(new HttpHandler() {
                    @Override
                    public void handleRequest(final HttpServerExchange exchange) throws Exception {
                        exchange.getResponseSender().send("Hello World");
                    }
                }).build();
        server.start();
    }

}

Есть какие-нибудь подсказки?

1 ответ

Второй аргумент addHttpListener(80, null) хозяин Вам нужно указать имя хоста или IP-адрес, чтобы прослушивать общедоступный IP-адрес. С помощью null он будет привязан только к localhost.

Попробуйте связать с публичным IP или связать с 0.0.0.0 если вы хотите привязать ко всем адресам.

Undertow server = Undertow.builder()
        .addHttpListener(80, "0.0.0.0")
        .setHandler(new HttpHandler() {
            @Override
            public void handleRequest(final HttpServerExchange exchange) throws Exception {
                exchange.getResponseSender().send("Hello World");
            }
        }).build();
server.start();
Другие вопросы по тегам