Cha*_* Li 2 port google-app-engine go
我正在尝试从 Go 1.9 迁移到 Go 1.11。我从迁移文档中复制了main函数
这是我的 app.yaml
runtime: go111
env: standard
instance_class: F1
handlers:
- url: /.*
script: auto
secure: always
redirect_http_response_code: '301'
- url: .*
script: auto
env_variables:
PORT: '443'
Run Code Online (Sandbox Code Playgroud)
这是我的主要功能
func main() {
http.HandleFunc("/demo", demoHandler)
port := os.Getenv("PORT")
if port == "" {
port = "443"
syslog.Printf("Defaulting to port %s", port)
}
syslog.Printf("Listening on port %s", port)
syslog.Fatal(http.ListenAndServe(fmt.Sprintf(":%s", port), nil))
}
Run Code Online (Sandbox Code Playgroud)
我的应用程序需要使用 HTTPS 在端口 443 上运行。但是,部署后,应用程序没有响应。我检查了日志,它显示“正在侦听端口 8081”。我不明白为什么需要8081而不是443。这个8081是哪里来的?
如果我对 main 函数进行硬编码以使用端口 443。它会在日志中显示“应用程序正在侦听端口 443,它应该侦听 PORT 环境变量定义的端口。因此,nginx 无法启动。性能可能会降级。请监听 PORT 环境变量定义的端口。”
我在这里想念什么?
环境PORT变量将由 AppEngine 平台设置,您不必在app.yaml配置文件中设置它。事实上,你甚至无法覆盖它。
查看运行时设置的环境变量列表。
PORT因此,只需像在 Go 代码中一样使用环境变量,但将其从app.yaml配置中删除。您只需启动一个非 HTTPS Web 服务器,平台就会为您提供 HTTPS 支持。
| 归档时间: |
|
| 查看次数: |
1829 次 |
| 最近记录: |