Pythonで記述されたAPIがあり、ISAPI拡張PyISAPIeを介してIIS 7.5でアクセスしています。このAPIを私たちのAPIから分離するのが賢明だと思いましたメインサイトなので、ポート8008でアクセスする別のサイトにあります。
http://domain/api
のようなURLでAPIにアクセスできるようにするために、IIS ARRとURL書き換えを使用して、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のステータスコードを返していることがわかります。
Failed Request Tracingをアクティブにした後、エラー/警告は次のとおりです(これは他のサイトからの応答を受信した後です-前のポイントを参照してください):
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
設定を増やす必要があります。許可される値とトラブルシューティングの詳細については、 この質問 on SO)を参照してください。
ARR(502)およびサイト(200)からの要求トレースを添付できますか?過去にも同様の問題がありましたが、ARRと書き換え中のサイトの設定で maxRequestLength を増やすことで解決したと思います。