ReWriteRuleによるプロキシタイムアウト
Nov 16 2020
Apache 2.4でReWriteRule(mod_rewrite)を使用してプロキシする場合、タイムアウトを制御する方法はありません。
<VirtualHost "*:443">
ServerName xxxx
Use ssl
RewriteEngine On
RewriteRule (.*/wms|/openlayers3/.*) http://localhost:8080$1 [P,L]
RewriteRule .* [F]
</VirtualHost>
私は失敗しました:
Timeout 400ProxyTimeout 400- ProxySet
<Proxy "http://localhost:8080/">
ProxySet connectiontimeout=100 timeout=400
</Proxy>
ProxyPass "/" "http://localhost:8080" connectiontimeout=100 timeout=400
上記のどのディレクティブを使用しても、タイムアウトは常に1分です。
回答
4 ximaera Nov 19 2020 at 12:52
このタイムアウトは、グローバルにのみ制御できます。グローバルTimeout設定httpd.confをお好みの値に変更します。
#
# Timeout: The number of seconds before receives and sends time out.
#
Timeout 400
おそらくこれを行うためのより良い方法は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;
}
}
このスニペットで何が起こっているのかを理解するためのnginxドキュメントへの追加リンク:
- location 正規表現がnginxでどのように機能するか
- proxy_pass
- proxy_read_timeout
- 書き換えルールをApacheからNginxに変換する
スニペットにないSSL構成については、ドキュメントもお読みください。