У меня есть API, написанный на Python, к которому я обращаюсь с IIS 7.5 через расширение ISAPI PyISAPIe. Я подумал, что было бы разумно отделить этот API от нашего основного сайта, чтобы он находился на другом сайте, доступ к которому осуществляется через порт 8008.
Чтобы иметь доступ к API с URL-адресом, например http://domain/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 превышает определенный размер (около 125 КБ в моих тестах) - для меньших размеров все работает правильно.
Я пробовал увеличить 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=""
Можете ли вы приложить следы запросов от ARR (502) и с сайта (200)? У меня была аналогичная проблема в прошлом, и я думаю, что решил ее, увеличив maxRequestLength в конфиге ARR и сайта, который переписывается.
Вам нужно увеличить maxJsonLength
настройка в web.config. Видеть этот вопрос на SO для получения подробной информации о допустимых значениях и устранении неполадок.