Proxy-Timeout mit ReWriteRule

Nov 16 2020

Es gibt keine Möglichkeit, das Timeout beim Proxy mithilfe von ReWriteRule (mod_rewrite) mit Apache 2.4 zu steuern.

<VirtualHost "*:443">
  ServerName xxxx
  Use ssl
  RewriteEngine On
  RewriteRule (.*/wms|/openlayers3/.*) http://localhost:8080$1 [P,L]
  RewriteRule .* [F]
</VirtualHost>

Ich habe es erfolglos versucht:

  • Timeout 400
  • ProxyTimeout 400
  • ProxySet
<Proxy "http://localhost:8080/">
  ProxySet connectiontimeout=100 timeout=400
</Proxy>
  • ProxyPass "/" "http://localhost:8080" connectiontimeout=100 timeout=400

Das Timeout beträgt immer 1 Minute, egal welche der oben genannten Anweisungen ich verwende.

Antworten

4 ximaera Nov 19 2020 at 12:52

Dieses Zeitlimit kann nur global gesteuert werden . Ändern Sie die globale TimeoutEinstellung in httpd.confIhren bevorzugten Wert:

#
# Timeout: The number of seconds before receives and sends time out.
#
Timeout 400

Ein besserer Weg, dies zu tun, wäre wahrscheinlich die Verwendung von 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;
    }
}

Zusätzliche Links zur Nginx-Dokumentation, damit Sie verstehen, was in diesem Snippet vor sich geht:

  • location und wie reguläre Ausdrücke in Nginx funktionieren
  • proxy_pass
  • proxy_read_timeout
  • Konvertieren von Umschreiberegeln von Apache nach Nginx

Für die in meinem Snippet fehlende SSL-Konfiguration lesen Sie bitte auch die Dokumentation .