【问题标题】:GAE go only serves paths on localhost not domainGAE go 只提供本地主机上的路径而不是域
【发布时间】:2016-07-15 18:57:44
【问题描述】:

我正在使用 appengine sdk 在本地为谷歌应用引擎开发一个小型 go 应用。

我有一个问题,只有当我尝试使用 localhost 而不是域名时才能提供不同于 root 的路径。

我的设置如下。

  • home.mydomain.com 指向我的家庭 IP 地址
  • 我的家庭路由器将端口 80 上的传入 tcp 和 udp 转发到端口 8080 上的笔记本电脑
  • 我的笔记本电脑运行的是 Windows 10
  • 我的go版本是go1.6 windows/amd64

我的 app.yaml:

application: tasks
version: 1
runtime: go
api_version: go1

handlers:
- url:  /.*
  script: _go_app

最小示例代码:

func init() {
    fileHandler := http.FileServer(http.Dir("../frontend"))

    http.HandleFunc("/loggedout", testHandler)
    http.Handle("/", fileHandler)

    log.Print(http.ListenAndServe(":8080", nil))
}

func testHandler(res http.ResponseWriter, req *http.Request){    
    panic("JUST NEED THIS TO WORK")
}

我的症状是,如果我访问 localhost:8080/ 我会得到我的网站,如果我访问 localhost:8080/loggedout 我会得到预期的恐慌。
如果我访问 home.mydomain.com/ 我会得到我的网站,但是如果我访问 home.mydomain.com/loggedout 连接就会挂起,在 chromes 网络选项卡中它被列为无限期挂起。

【问题讨论】:

  • 您是否使用 App Engine SDK 运行? (goapp 或 dev_appserver?)如果是这样,您的代码不应该调用 ListenAndServe。如果不是,那么这不是应用引擎问题...
  • 非常感谢 Greg 你在哪里对,我不需要 ListenAndServe。但是,一旦我删除了通过 home.mydomain.com/ 访问时没有任何效果,但那是因为我没有监听它,所以我在命令中添加了 --host 10.0.0.2 并且它有效

标签: google-app-engine go


【解决方案1】:

正如 Greg 指出的,当我使用 goapp 时,我不需要调用 ListenAndServe。 为了让 goapp 监听 localhost 之外的请求,我还必须将 --host "my laptops ip" 添加到命令中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-15
    • 1970-01-01
    相关资源
    最近更新 更多