我有一个简单的容器化Web应用程序(Nginx提供HTML和Javascript),我已将其部署到Google Cloud Run。
问题是,即使我已经验证并更新了DNS记录,我似乎也无法强制HTTPS连接。用户仍然可以访问我的Cloud Run应用程序中不安全的http端点。
如何设置可强制或重定向用户使用HTTPS的Google Cloud Run服务?
答案 0 :(得分:4)
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)
}