ReWriteRule ile proxy zaman aşımı

Nov 16 2020

Apache 2.4 ile ReWriteRule (mod_rewrite) aracılığıyla proxy yaparken zaman aşımını kontrol etmenin bir yolu yoktur.

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

Başarısız bir şekilde denedim:

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

Zaman aşımı, yukarıdaki direktiflerden hangisini kullanırsam kullanayım her zaman 1 dakikadır.

Yanıtlar

4 ximaera Nov 19 2020 at 12:52

Bu zaman aşımı yalnızca genel olarak kontrol edilebilir . Genel Timeoutayarı httpd.conftercih ettiğiniz değere değiştirin:

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

Muhtemelen bunu yapmanın daha iyi bir yolu nginx kullanmaktır:

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;
    }
}

Bu kod parçacığında neler olduğunu anlamanız için nginx belgelerine ek bağlantılar:

  • location ve nginx'te normal ifadelerin nasıl çalıştığını
  • proxy_pass
  • proxy_read_timeout
  • Yeniden yazma kurallarını Apache'den Nginx'e dönüştürme

Snippet'imde eksik olan SSL yapılandırması için lütfen belgeleri de okuyun .