У меня есть httpd-сервер, проксирующий запросы на 2 разных сервера tomcat. Один из моих серверов обрабатывает аутентификацию и возвращает конкретный код ошибки http 521, когда у пользователя уже есть запущенный сеанс.
Моя проблема в том, что httpd автоматически сопоставляет этот код ошибки 521 с 500 (внутренняя ошибка сервера), а затем мой клиент не может обработать ее должным образом.
Я пытался отключить ProxyErrorOverride
, чтобы удалить /error/HTTP_INTERNAL_SERVER_ERROR.html.var
но это ничего не меняет.
Как я могу попросить httpd ничего не менять в проксируемом сообщении?
<IfModule proxy_module>
ProxyPass /context1 http://127.0.0.1:8001/context1
ProxyPass /context2 http://127.0.0.1:8002/context2
ProxyPreserveHost Off
ProxyErrorOverride Off
</IfModule>
заранее спасибо
521
не является допустимым кодом ответа HTTP, и Apache нарушит спецификацию HTTP, вернув его.
Взгляните на журнал ошибок Apache - он может на самом деле подавиться кодом ответа, который он получает от бэкэнда, и выдает ошибку клиенту, а не отображает 5xx
код для 500
.
Я настоятельно рекомендую не использовать подобные коды HTTP-ответов, но HAProxy и Varnish могут действовать как «тупой канал», который может соответствовать вашим потребностям.