【发布时间】: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