Веб-сервер 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();