为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
繁星淼淼 2023-07-17 16:42:19
我正在尝试从 Go 1.9 迁移到 Go 1.11。我从迁移文档中复制了main函数这是我的 app.yamlruntime: go111env: standardinstance_class: F1handlers:  - url: /.*    script: auto    secure: always    redirect_http_response_code: '301'  - url: .*    script: autoenv_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 环境变量定义的端口。”我在这里想念什么?
查看完整描述

1 回答

?
慕田峪9158850

TA贡献1794条经验 获得超8个赞

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

查看运行时设置的环境变量列表。

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


查看完整回答
反对 回复 2023-07-17
  • 1 回答
  • 0 关注
  • 109 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号