Mat*_*ewK 6 php timeout mod-proxy
我使用PHP 5.5的Apache 2.4而不使用php_mod但使用PHP-FPM和mod_proxy_fcgi,所以我在vhost中添加了以下内容:
ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:7000/home/var/www/site/$1
Run Code Online (Sandbox Code Playgroud)
这很好用但是当我遇到一些超时问题时,我添加了以下代码以便将此问题修复到vhost文件:
<Proxy fcgi://127.0.0.1:7000>
ProxySet timeout=3600
</Proxy>
ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:7000/home/var/www/site/$1
Run Code Online (Sandbox Code Playgroud)
但是,我想将此超时仅添加到网站的管理面板,即www.site.com/admin/xxx.我尝试添加如下所示的位置标记,但它没有用(重启时Apache失败).
<LocationMatch ^/admin/.*\.php(/.*)?$>
<Proxy fcgi://127.0.0.1:7000>
ProxySet timeout=3600
</Proxy>
</LocationMatch >
ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:7000/home/var/www/site/$1
Run Code Online (Sandbox Code Playgroud)
首先,这可能吗?那么这将是正确的语法?
非常感谢你的时间
/admin/*虽然这将允许管理员下的任何脚本使用定义的设置运行,但在管理员(我假设是登录)墙后面,这不应该是一个问题。
<Proxy "fcgi://127.0.0.1:7000/home/var/www/site/admin/*">
ProxySet timeout=3600
</Proxy>
Run Code Online (Sandbox Code Playgroud)
ProxySet可以在 Proxy 指令中使用而无需定义 url/balancer/worker。但是,您仍然应该能够在 Location 指令中使用 ProxySet。
<LocationMatch ^/admin/.*\.php(/.*)?$>
ProxySet "fcgi://127.0.0.1:7000" timeout=3600
</LocationMatch>
Run Code Online (Sandbox Code Playgroud)
如果 apache 仍然启动失败,请检查 apache 日志或运行strace -Ff apachectl start来查找问题,这可能只是该版本的 apache 中的错误。
但是,我强烈怀疑您的 LocationMatch 正则表达式^/admin/.*\.php(/.*)?$是 apache 失败的原因。