Назад | Перейти на главную страницу

Установка тайм-аута для всех сопоставлений ProxyPass в директиве Apache Server mod_proxy

Что есть и работает:

я использую Apache HTTPD 2.2 для запросов прокси. У меня несколько ProxyPass сопоставления:

ProxyRequests On 
<Proxy *>
AddDefaultCharset off
    Order deny,allow
    Allow from all
</Proxy>
ProxyPreserveHost Off

ProxyPass /a http://some_ip/
ProxyPassReverse /a http://some_ip/

ProxyPass /b http://some_other_ip/
ProxyPassReverse /b http://some_other_ip/

...

Это хорошо работает.

Что я хочу:

Некоторые из моих запросов занимают больше времени, поэтому время ожидания истекло, и я получил Ошибка прокси - причина: ошибка чтения с удаленного сервера.

Я хочу установить timeout на все мои запросы. Могу ли я сделать это, не добавляя timeout=... KeepAlive=On для каждого ProxyPass отображение?

У меня сейчас что-то вроде:

ProxyPass /a http://some_ip/ timeout=1200 KeepAlive=On
ProxyPassReverse /a http://some_ip/

ProxyPass /b http://some_other_ip/ timeout=1200 KeepAlive=On
ProxyPassReverse /b http://some_other_ip/

... and i do this for all my ProxyPass mappings

Могу ли я каким-то образом сказать Apache добавить timeout и KeepAlive параметры для всех сопоставлений? Заранее спасибо.


Редактировать: Я также пробовал использовать mod_reqtimeout директиву напрямую, но это не помогло мне:

LoadModule reqtimeout_module modules/mod_reqtimeout.so

RequestReadTimeout header=1200 body=1200

Согласно документации Apache, если ProxyTimeout директива конфигурации не указано, настройка global / vhost для Тайм-аут используется и действует. Итак, если серверная часть занимает больше времени, чем Тайм-аут секунд, Apache закроет соединение (!).

Так что хотя ProxyTimeout имеет значение по умолчанию 300, вам в любом случае нужно указать его, чтобы убедиться, что он действует.

Мне удалось найти решение самостоятельно. Вы можете установить тайм-аут, используя непосредственно ProxyTimeout директива mod_proxy :

ProxyRequests On 
<Proxy *>
    AddDefaultCharset off
    Order deny,allow
    Allow from all
</Proxy>
ProxyPreserveHost Off

ProxyTimeout 1200