区域 ID
REGION_ID
是 Google 根据您在创建应用时选择的区域分配的缩写代码。此代码不对应于国家/地区或省,尽管某些区域 ID 可能类似于常用国家/地区代码和省代码。对于 2020 年 2 月以后创建的应用,REGION_ID.r
包含在 App Engine 网址中。对于在此日期之前创建的现有应用,网址中的区域 ID 是可选的。
详细了解区域 ID。
本文档介绍了 App Engine 应用如何接收请求和发送响应。如需了解详情,请参阅请求标头参考。
如果您的应用使用服务,您可以将请求发送到特定服务或此服务的特定版本。如需详细了解服务可寻址性,请参阅请求的路由方式。
处理请求
应用负责启动 Web 服务器和处理请求。您可以使用支持您的开发语言的任何 Web 框架。
App Engine 运行应用的多个实例,每个实例都有自己的 Web 服务器来处理请求。请求都可以路由到任何实例,因此来自同一用户的连续请求并不一定会发送到同一实例。一个实例可以并行处理多个请求。系统会根据流量的变化自动调整实例数量。
配额和限制
App Engine 会随着流量的增加自动为您的应用分配资源。但是,这一过程会受到下列限制:
App Engine 会为低延时应用(应用响应请求的时间少于 1 秒)预留自动扩缩容量。
严重受 CPU 限制的应用还可能发生额外的延时,以便与同一服务器上的其他应用有效地共享资源。静态文件请求不受这些延迟限制的影响。
发送到应用的所有传入请求都会计入请求限额。为响应请求而发送的数据会计入传出带宽(计费)限额。
HTTP 和 HTTPS(安全)请求均计入请求、传入带宽(计费)和传出带宽(计费)限额。Google Cloud 控制台的“配额详情”页面还会分别列出安全请求次数、安全传入带宽和安全传出带宽的值,以供参考。仅 HTTPS 请求计入这些值。如需了解详情,请参阅配额页面。
以下限制仅适用于请求处理程序的使用:
请求限制
- 允许最大约 15KB 的请求标头。
- 请求的总大小上限为约 32MB。
- 转发到应用服务器时,所有 HTTP/2 请求都将转换为 HTTP/1.1 请求。
- SSL 连接在负载均衡器处结束。来自负载均衡器的流量通过加密渠道发送到实例,然后通过 HTTP 转发到应用服务器。您可以通过 X-Forwarded-Proto 标头了解原始请求是 HTTP 还是 HTTPS。
响应限制
- 响应由 64k 存储块缓冲。
- 响应大小无限制。
- 响应时间限制为一小时。
- 响应标头限制为 64 KB。超出此上限的响应标头将返回 HTTP 502 错误,并显示日志
upstream sent too big header while reading response header from upstream
。
不支持的 HTTP 请求
App Engine 柔性环境不支持以下功能:
- 发送至后端服务的 HTTP/2 流量。
- 直接访问实例的 HTTP 请求。
请求标头
传入 HTTP 请求包含客户端发送的 HTTP 标头。为保证安全,部分标头在到达应用前由中间代理进行清理或修改。
如需了解详情,请参阅请求标头参考文档。
停用缓冲
默认情况下,来自 App Engine 的所有响应都使用 64k 存储块进行缓冲。在某些情况下,停用缓冲并将字节直接流式传输到客户端可能是合理的做法。当使用挂起 GET 或服务器发送的事件 (SSE) 时,通常会希望停用缓冲。如需停用缓冲,您可以将 X-Accel-Buffering
响应标头设置为 no
。
强制 HTTPS 连接
出于安全考虑,所有应用都应建议客户端使用 https
连接。如需指示浏览器为给定页面或整个网域使用 https
而不是 http
,请在响应中设置 Strict-Transport-Security
。例如:
Strict-Transport-Security: max-age=31536000; includeSubDomains
处理异步后台工作
后台工作是指您的应用在传送 HTTP 响应后为请求执行的任何工作。避免在应用中执行后台工作,并审核代码,以确保所有异步操作都会在传送响应之前完成。
对于长时间运行的作业,我们建议使用 Cloud Tasks。使用 Cloud Tasks 时,HTTP 请求会长期有效,并且仅在任何异步工作结束后返回响应。