編集:私の目的は、複数の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")
}
ほとんど初心者のミス:
- ピングhttp://localhost:9000 - 述べたように、pingがホストでないWebアドレスに使用されます。代わりにwget http://localhost:9000を使用してください。それを修正するために他の人に感謝します。
- サーバー上でアプリケーションを実行中にSSHセッションを終了する - セッションを閉じると、アプリケーションもシャットダウンします。
- はCtrl + Zを使用する - あなたは、単一のターミナルウィンドウを使用していて、Ctrlキー+ Zを使用する場合、それはプログラムを一時停止し、サーバに
にアクセスしている間、あなたが問題に直面するだろう、私はそれに役立つことを願っています初心者は私のようなプログラマーに行く。
ホスト名は「http://127.0.0.1:8090」ではありません。それはURLです。この場合は 'ping localhost'を実行することはできません。 'wget http://127.0.0.1:8090' –
のようなものを試してみてください。可能であれば、画像の代わりにテキストを投稿してください。 – gavv