gpt4 book ai didi

google-app-engine - 为什么应用程序引擎忽略 app.yaml 中的 PORT 环境变量

转载 作者:行者123 更新时间:2023-12-01 20:24:26 27 4
gpt4 key购买 nike

我正在尝试从 Go 1.9 迁移到 Go 1.11。我从 the migration document 复制了 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'

这是我的主要功能

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))
}

我的应用程序需要使用 HTTPS 在端口 443 上运行。但是,部署后,应用程序没有响应。我检查了日志,它显示“正在监听端口 8081”。我不明白为什么需要8081而不是443。这个8081是从哪里来的?

如果我对 main 函数进行硬编码以使用端口 443。它会在日志中显示“应用程序正在监听端口 443,它应该监听 PORT 环境变量定义的端口。因此,nginx 无法已启动。性能可能会下降。请监听 PORT 环境变量定义的端口。”

我在这里想念什么?

最佳答案

PORT 环境变量将由 AppEngine 平台设置,您不必在 app.yaml 配置文件中设置它。事实上,您甚至无法覆盖它。

请参阅list of environment variables set by the runtime .

因此,只需像在 Go 代码中一样使用 PORT 环境变量,但将其从 app.yaml 配置中删除。您只需启动一个非 HTTPS 的 Web 服务器,平台就会为您提供 HTTPS 支持。

关于google-app-engine - 为什么应用程序引擎忽略 app.yaml 中的 PORT 环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57754695/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com