Tempo limite do proxy com ReWriteRule
Nov 16 2020
Não há como controlar o tempo limite ao fazer proxy por meio de ReWriteRule (mod_rewrite) com Apache 2.4.
<VirtualHost "*:443">
ServerName xxxx
Use ssl
RewriteEngine On
RewriteRule (.*/wms|/openlayers3/.*) http://localhost:8080$1 [P,L]
RewriteRule .* [F]
</VirtualHost>
Tentei sem sucesso:
Timeout 400ProxyTimeout 400- ProxySet
<Proxy "http://localhost:8080/">
ProxySet connectiontimeout=100 timeout=400
</Proxy>
ProxyPass "/" "http://localhost:8080" connectiontimeout=100 timeout=400
O tempo limite é sempre de 1 minuto, não importa qual das diretivas acima eu uso.
Respostas
4 ximaera Nov 19 2020 at 12:52
Esse tempo limite pode ser controlado apenas globalmente . Altere a Timeoutconfiguração global httpd.confpara o valor de sua preferência:
#
# Timeout: The number of seconds before receives and sends time out.
#
Timeout 400
Provavelmente, a melhor maneira de fazer isso seria usar o nginx:
server {
listen 443;
server_name xxxx;
# ... ssl setup ...
location ~* /wms$ {
proxy_pass http://localhost:8080;
proxy_read_timeout 400;
}
location /openlayers3/ {
proxy_pass http://localhost:8080;
proxy_read_timeout 400;
}
location / {
return 403;
}
}
Links adicionais para a documentação do nginx para que você entenda o que está acontecendo neste snippet:
- location e como as expressões regulares funcionam no nginx
- proxy_pass
- proxy_read_timeout
- Converter regras de reescrita do Apache para Nginx
Para a configuração SSL ausente em meu snippet, leia também a documentação .
O que significa um erro “Não é possível encontrar o símbolo” ou “Não é possível resolver o símbolo”?