2016-11-13 17 views
-3

編集:私の目的は、複数のGo HTTPサーバーを同時に実行することでした。 Nginxのリバースプロキシを使用している間、複数のポートで実行されているGo HTTPサーバーにアクセスしているときにいくつかの問題に直面していました。複数のGoLang httpサーバを同時に実行し、コマンドラインを使ってそれらをテストするには?

最後に、これは複数のサーバーを実行するために使用したコードです。私が作っていた

package main 

import (
    "net/http" 
    "fmt" 
    "log" 
) 

func main() { 

    // Show on console the application stated 
    log.Println("Server started on: http://localhost:9000") 
    main_server := http.NewServeMux() 

    //Creating sub-domain 
    server1 := http.NewServeMux() 
    server1.HandleFunc("/", server1func) 

    server2 := http.NewServeMux() 
    server2.HandleFunc("/", server2func) 

    //Running First Server 
    go func() { 
     log.Println("Server started on: http://localhost:9001") 
     http.ListenAndServe("localhost:9001", server1) 
    }() 

    //Running Second Server 
    go func() { 
     log.Println("Server started on: http://localhost:9002") 
     http.ListenAndServe("localhost:9002", server2) 
    }() 

    //Running Main Server 
    http.ListenAndServe("localhost:9000", main_server) 
} 

func server1func(w http.ResponseWriter, r *http.Request) { 
    fmt.Fprintf(w, "Running First Server") 
} 

func server2func(w http.ResponseWriter, r *http.Request) { 
    fmt.Fprintf(w, "Running Second Server") 
} 

ほとんど初心者のミス:

  1. ピングhttp://localhost:9000 - 述べたように、pingがホストでないWebアドレスに使用されます。代わりにwget http://localhost:9000を使用してください。それを修正するために他の人に感謝します。
  2. サーバー上でアプリケーションを実行中にSSHセッションを終了する - セッションを閉じると、アプリケーションもシャットダウンします。
  3. はCtrl + Zを使用する - あなたは、単一のターミナルウィンドウを使用していて、Ctrlキー+ Zを使用する場合、それはプログラムを一時停止し、サーバに

にアクセスしている間、あなたが問題に直面するだろう、私はそれに役立つことを願っています初心者は私のようなプログラマーに行く。

+1

ホスト名は「http://127.0.0.1:8090」ではありません。それはURLです。この場合は 'ping localhost'を実行することはできません。 'wget http://127.0.0.1:8090' –

+2

のようなものを試してみてください。可能であれば、画像の代わりにテキストを投稿してください。 – gavv

答えて

2

古典的なpingは、TCPポートをテストするためには機能しません。ただホスト(https://serverfault.com/questions/309357/ping-a-specific-portを参照してください)。私は多くのフレームワークがサーバが生きているかどうかをテストするための "ping"オプションを提供しているのを見てきました。これが間違いの原因かもしれません。

私はnetcatを使用したい:

$ nc localhost 8090 -vvv 
nc: connectx to localhost port 8090 (tcp) failed: Connection refused 

$ nc localhost 8888 -vvv 
found 0 associations 
found 1 connections: 
    1: flags=82<CONNECTED,PREFERRED> 
    outif lo0 
    src ::1 port 64550 
    dst ::1 port 8888 
    rank info not available 
    TCP aux info available 

Connection to localhost port 8888 [tcp/ddi-tcp-1] succeeded! 

あなたは(それぞれRPMとDEBベースのディストリビューションの場合)sudo yum install netcatまたはsudo apt-get install netcatでそれをインストールする必要があります。

+0

ありがとうございます。私はnetcatを試してみる。 – Adi

関連する問題