2016-06-26 7 views
0

私は2.0.0.Alpha1ウェブサーバーをテストしています。私がそれをローカルで実行すると、localhost:80に行くとHello Worldが返されます。私はリモートサーバー上にWebサーバーを展開して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(); 
    } 

} 

手がかりはありますか?

+0

ヒント#1: "netstat -a"(または同等のもの)を使用して、サーバーがリッスンしているIPとポートを確認します。 –

+0

'tcp6 0 0 127.0.0.1:80 ::: * LISTEN 2939/java ' – Hooli

+0

そのIPアドレスを使用してIPv6でcurlを使用していますか? ( "localhost" ...) –

答えて

0

addHttpListener(80, null)の2番目の引数がホストです。パブリック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(); 
関連する問題