![较大文件的 IIS ARR/反向代理 502 错误](https://linux22.com/image/640782/%E8%BE%83%E5%A4%A7%E6%96%87%E4%BB%B6%E7%9A%84%20IIS%20ARR%2F%E5%8F%8D%E5%90%91%E4%BB%A3%E7%90%86%20502%20%E9%94%99%E8%AF%AF.png)
我有一个用 Python 编写的 API,我通过 ISAPI 扩展 PyISAPIe 使用 IIS 7.5 访问它。我认为将此 API 与我们的主站点分开是明智的,因此它位于使用端口 8008 访问的不同站点中。
为了能够使用类似的 URL 访问 API http://domain/api
,我在 IIS 中使用 ARR 和 URL Rewrite 创建了反向代理规则,以便http://domain/api
重定向到http://domain:8008
。
反向代理似乎工作正常,并且在大多数情况下我都能从 API 收到正确的响应(API 返回 JSON)。但是,在某些情况下,我会收到502
以下错误消息:
502 - Web server received an invalid response while acting as a gateway or proxy server.
这似乎仅当 JSON 响应超过一定大小(在我的测试中约为 125KB)时才会发生 - 对于较小的尺寸,一切似乎都正常工作。
我尝试增加Response buffer threshold
代理设置,但没有效果。
附加信息
在日志中我可以看到对端口 8008 上的站点的请求成功并返回 200 状态代码。
激活失败请求跟踪后,唯一的错误/警告如下(这是在收到来自其他站点的响应后 - 参见上一点):
MODULE_SET_RESPONSE_ERROR_STATUS
Warning ModuleName="ApplicationRequestRouting",
Notification="EXECUTE_REQUEST_HANDLER", HttpStatus="502",
HttpReason="Bad Gateway", HttpSubStatus="3",
ErrorCode="2147954552"ConfigExceptionInfo=""
答案1
您需要maxJsonLength
在 web.config 中增加设置。请参阅这个问题有关允许值和故障排除的详细信息,请访问 SO。
答案2
您能附上来自 ARR(502)和站点(200)的请求跟踪吗?我以前也遇到过类似的问题,我想我通过增加最大请求长度在正在重写的 ARR 和站点的配置中。