【问题标题】:Point domain to go server with gorilla mux使用 gorilla mux 将域指向服务器
【发布时间】:2015-12-01 09:20:25
【问题描述】:

我有一个小型服务器,我希望该服务器使用 gorilla/mux 包监听我的自定义域 sftablet.dev。

代码如下:

package main

import (
    "fmt"
    "net/http"

    "github.com/gorilla/mux"
)

func main() {
    r := mux.NewRouter()
    r.Host("sftablet.dev")
    r.HandleFunc("/", HomeHandler)
    r.HandleFunc("/products", ProductsHandler)
    http.ListenAndServe(":8080", r)
}

func HomeHandler(w http.ResponseWriter, r *http.Request) {
    fmt.Fprint(w, "Hey, this is homepage")
}

func ProductsHandler(w http.ResponseWriter, r *http.Request) {
    fmt.Fprint(w, "Hey, this is products")
}

我还在 hosts 文件中添加了这个:

127.0.0.1       sftablet.dev

但由于某种原因它不起作用。如果我访问 127.0.0.1:8080,它确实有效,但当我访问 http://sftablet.dev/ 时无效。还清除了 DNS 缓存。

【问题讨论】:

    标签: go gorilla


    【解决方案1】:

    http://sftablet.dev/ 默认查询端口 80

    您的服务器只监听端口 8080。http://sftablet.dev:8080/ 应该可以工作。

    【讨论】:

    • 如果我尝试仅使用sftablet.dev 访问?我试过 http.ListenAndServe(":80", r) 但它不起作用
    • @zuzuleinen 它会“现在”工作吗?或者它会“不”工作?
    • @zuzuleinen 看看你的 80 端口是否还没有被占用:*.com/a/1960759/6309
    【解决方案2】:

    不使用r.Host("sftablet.dev"),而是将域名主机移动到http.ListenAndServe方法中:

    func main() {
        r := mux.NewRouter()
        // r.Host("sftablet.dev")
        r.HandleFunc("/", HomeHandler)
        r.HandleFunc("/products", ProductsHandler)
        http.ListenAndServe("sftablet.dev:8080", r)
    }
    

    【讨论】: