我有一个简单的容器化 Web 应用程序(Nginx 提供 HTML 和 Javascript),我将它部署到 Google Cloud Run。
问题是,即使我已经验证并更新了 DNS 记录,我似乎也无法强制使用 HTTPS 连接。如果用户愿意,他们仍然可以访问我的 Cloud Run 应用程序的不安全 http 端点。
如何设置强制或重定向用户使用 HTTPS 的 Google Cloud Run 服务?
我有一个简单的容器化 Web 应用程序(Nginx 提供 HTML 和 Javascript),我将它部署到 Google Cloud Run。
问题是,即使我已经验证并更新了 DNS 记录,我似乎也无法强制使用 HTTPS 连接。如果用户愿意,他们仍然可以访问我的 Cloud Run 应用程序的不安全 http 端点。
如何设置强制或重定向用户使用 HTTPS 的 Google Cloud Run 服务?
LB 会发送一个名为的标头X-Forwarded-Proto
,其中包含一个http
或https
多个,因此您可以轻松地重定向,301 Moved Permanently
以防您检测到它。
使用 Nginx 编辑问题的示例:http: //scottwb.com/blog/2013/10/28/always-on-https-with-nginx-behind-an-elb/
示例 Go 代码:
func main() {
http.HandleFunc("/", func(writer http.ResponseWriter, request *http.Request) {
if request.Header["X-Forwarded-Proto"][0] == "http" {
http.Redirect(writer, request, "https://" + request.Host + request.RequestURI, http.StatusMovedPermanently)
return
}
fmt.Printf("Request: %+v, headers: %+v \n", request, request.Header)
writer.Write([]byte("hello world"))
})
http.ListenAndServe(":"+os.Getenv("PORT"), nil)
}