我正在尝试查找如何阻止 GCP AppEngine 的 HTTP 访问,但没有找到很多详细信息。 我感觉可能不太可能。
有人可以通过代码或网络设置来阐明这一点吗?
据我了解,无法阻止 App Engine 中的 Http 访问。您可以使用 App Engine Standard 中实现的安全处理程序将 http 重定向到 https 流量。
对于 App Engine Flex,关于阻止端口 80 替代方案,您可以实施计算虚拟机并设置防火墙规则,然后重定向到 App Engine。
最后,请记住,在 App Engine 防火墙 中,您需要指定要允许或拒绝的 IP 范围,不可能拒绝实际端口。
对于遇到此问题并寻求快速解决方案的用户,您可以利用默认 Google App Engine (GAE) 代理提供的
X-Forwarded-Proto
标头来确定客户端使用的原始协议(HTTP 或 HTTPS)。
X-Forwarded-Proto [http | ] https] 根据客户端用于连接到应用程序的协议显示 http 或 https。 Google Cloud Load Balancer 终止所有 https 连接,然后通过 http 将流量转发到 App Engine 实例。例如,如果用户通过 https://PROJECT_ID.REGION_ID.r.appspot.com 请求访问您的网站,则 X-Forwarded-Proto 标头值为 https。
事实上,您可以在应用程序中实现一个过滤器来阻止 X-Forwarded-Proto 标头值为 http 的所有请求。这可确保仅处理 HTTPS 请求,从而有效阻止应用程序级别的任何不安全 HTTP 流量,同时允许通过 Google App Engine (GAE) 代理路由安全流量。
确保 app.yaml 处理程序中的安全变量设置为可选,否则 App Engine 将根据其值自动将传入请求重定向到 HTTP 或 HTTPS。它的默认值是可选的