我有一个用Python编写的API,通过ISAPI扩展PyISAPIe访问IIS 7.5。 我认为从我们的主站点分离这个API是明智的,所以它在不同的站点通过8008端口访问。
为了能够使用像http://domain/api这样的URL访问API,我已经在IIS中使用ARR和URL Rewrite创build了一个反向代理规则,以便http://domain/api被redirect到http://domain:8008 。
反向代理似乎工作正常,我在大多数情况下从API接收正确的响应(API返回JSON)。 但是,在某些情况下,我收到502错误,并显示以下消息:
502 - Web server received an invalid response while acting as a gateway or proxy server.
这似乎只发生在JSON响应超过一定的大小(在我的testing中大约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=""
您需要增加web.config中的maxJsonLength设置。 请在SO上查看此问题以获取允许的值和故障排除的详细信息
你能附上来自ARR(502)和网站(200)的请求追踪吗? 我过去也遇到类似的问题,我想我通过增加ARR和正在被重写的站点的configuration中的maxRequestLength来解决这个问题。