首页 > 解决方案 > Golang Gorilla mux如何处理不同的端口?

问题描述

我尝试在不同的端口中分离内部使用和外部使用 API。

例如端口 80 中的外部,端口 5487 中的内部。

我使用github.com/gorilla/mux进行 url 路由。

我尝试创建两条不同的路线

func main() {

    internal := mux.NewRouter()
    external := mux.NewRouter()

    internal.HandleFunc("/foo", logging(foo))
    internal.HandleFunc("/bar", logging(bar))

    external.HandleFunc("/monitor", monitor())

    http.ListenAndServe(":80", internal)
    http.ListenAndServe(":8080", external)
}

但事实证明,第二台服务器是无法访问的代码。

那么如何在 go 中创建两个不同的端口呢?

谢谢

标签: go

解决方案


使用 goroutine。

    package main

    import (
        "net/http"

        "github.com/gorilla/mux"
    )

    func main() {

        internal := mux.NewRouter()
        external := mux.NewRouter()

        internal.HandleFunc("/foo", logging(foo))
        internal.HandleFunc("/bar", logging(bar))

        external.HandleFunc("/monitor", monitor())

        go http.ListenAndServe(":80", internal)

        go http.ListenAndServe(":8080", external)

        select{} // block forever to prevent exiting
    }

推荐阅读