我只是在GCP上运行gcloud app deploy
命令就可以毫不费力地部署我的应用程序。这将灵活的环境视为默认环境。昨天我做了必要的自定义,为ssl的这个应用程序提供自定义域名。目前,当我转到http://example.com
,https://example.com
中的任何一个时,它都有效,但我也想强迫人们使用https。目前,http请求按原样工作,我希望它们被定向到https。我希望将任何用户引导至https://example.com
,当他们尝试使用http访问网站时,或者根本不使用任何内容,例如example.com
。如何实现这一目标?
这是我的app.yaml
:
api_version: go1
env: flex
runtime: go
我已尝试使用handlers and secure
属性,但似乎它们对灵活环境无效。
感谢。
答案 0 :(得分:2)
目前,灵活的环境不支持仅使用app.yaml
进行HTTPS定位。但是,这可以通过使用像这样的函数在服务器代码中实现,
func directToHttps(w http.ResponseWriter, r *http.Request, next http.HandlerFunc) {
if r.URL.Scheme == "https" || strings.HasPrefix(r.Proto, "HTTPS") || r.Header.Get("X-Forwarded-Proto") == "https" {
next(w, r)
} else {
target := "https://" + r.Host + r.URL.Path
http.Redirect(w, r, target,
http.StatusTemporaryRedirect)
}
}
我使用negroni
将此函数包装到我的处理程序。
可以在此处找到工作示例:https://github.com/malisit/munhasir