ReWriteRule 代理超时

Proxy timeout with ReWriteRule

在 Apache 2.4 中通过 ReWriteRule (mod_rewrite) 代理时无法控制超时。

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

我试过失败:

<Proxy "http://localhost:8080/">
  ProxySet connectiontimeout=100 timeout=400
</Proxy>

无论我使用上述哪个指令,超时始终为 1 分钟。

这个超时是可以控制的only globally。将 httpd.conf 中的全局 Timeout 设置更改为您的首选值:

#
# 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 文档的其他链接,以便您了解此代码段中发生的事情:

对于我的代码段中缺少的 SSL 配置,另请阅读 the documentation