2016-11-13 41 views
-3

編輯:我的目標是同時運行多個Go HTTP Server。我在使用Nginx反向代理時訪問運行在多個端口上的Go HTTP服務器時遇到了一些問題。如何同時運行多個Go lang 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 - 如前所述,中國平安用於主機不是一個網絡地址。改爲使用wget http://localhost:9000。感謝其他人修正它。
  2. 在服務器上運行應用程序時結束SSH會話 - 關閉會話後,它也會關閉應用程序。
  3. 。按Ctrl + Z的 - 如果你正在使用一個終端窗口,你會使用Ctrl + Z,則暫停程序,並在訪問服務器

我希望它會幫助你將面對的問題新手Go lang程序員喜歡我。

+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! 

您可能必須與sudo yum install netcatsudo apt-get install netcat(分別爲RPM和基於DEB的發行版)安裝。

+0

謝謝。我會嘗試netcat。 – Adi

相關問題