别名通过Action / ScriptAlias /等FastCGI代理协议处理程序

所以这不是让PHP工作,而是关于混合语法结构。 具体而言,我正在寻找一种方法来使用一个优雅的Action 速记绑定PHP-FPM在不同的虚拟主机。

所有工作选项:

  1. 你好, mod-fastcgi的方式:

    以前我曾经使用FastCGIExternalServerScriptAlias等人的虚拟path:

     FastCGIExternalServer /www/fcgi/api5 -flush -socket /var/run/php-fpm-api.sock ScriptAlias /..A5.. /www/fcgi/api5 Action php5-api /..A5.. AddHandler php5-api .php 

    现在这既不是非常现代的,也不是很可读。 除了AddHandler php5-user部分。 这正是我想在整个configuration中继续使用的。

  2. 用于mod-proxy-fcgi的 ProxyPassMatch

    对于PHP-FPM设置,通常首先推荐这种设置:

     ProxyPassMatch ^/(.*\.php(/.*)?)$ proxy:unix:/run/php-fpm.sock|fcgi://localhost 

    正则expression式匹配当然有它的魅力。 但它很容易干扰RewriteRule集。 所以这也不是最好的select。

  3. SetHandler<FilesMatch>

    当然是更好和常见的select:

     <FilesMatch ".+\.ph(p[3457]?|t|tml)$"> SetHandler "proxy:unix:/run/php/php7.0-fpm.sock|fcgi://localhost" </FilesMatch> 

    但是我仍然认为这太冗长了,相比于AddHandler php7-whatever .php

  4. 带代理指定符的AddHandler

    没有看到这个在Apache手册中的任何地方提到,也没有看到。 但是,您也可以使用更简单的AddHandler方法来映射.php文件:

     AddHandler "proxy:unix:/run/php-fpm.sock|fcgi://localhost" .php 

    这是我喜欢的东西。 但是我仍然需要在整个虚拟主机configuration中复制代理string。 当然,我可以使用Include一堆vhost / fpm-pool变体,我宁愿有预定义的名称。

  5. DefineAddHandler

    唯一明智的解决方法似乎是:

     Define php7-api "proxy:unix:/run/php7-api.sock|fcgi://localhost" Define php7-usr "proxy:unix:/run/php7-usr.sock|fcgi://localhost" Define php5-tst "proxy:unix:/run/php5-tst.sock|fcgi://localhost" # … AddHandler ${php7-usr} .php 

    如果这是最短的select,我会明显地解决这个问题。 用一些缩写来定义FastCGIstring是我所追求的。 (因此,即使在虚拟环节中,它也可以更容易地混合和混合。)

  6. RewriteRule[H=]

    只是为了完整性/还没有检查处理程序/定义快捷方式将在这里工作:

     RewriteRule \.php$ - [H=${php72-beta}] 

现在我可能会解决Define解决方法。 但是我仍然想知道为什么没有任何“标准”的aproaches与mod_proxy_fcgi一起玩。

非function性方法:

  1. 基本Action

    我原以为这可能会这样做:

     Action php7-fpm "proxy:unix:/run/php7-fpm.sock|fcgi://localhost" virtual AddHandler php7-fpm .php 

    …因为Action适用于CGI的所有东西,而mod_proxy可以把它捡起来。 但是,大概行动仍然只承认简单的旧脚本,即使是virtual

  2. 卷入的ScriptAlias

    类似于旧的mod_fastcgischeme,也试过:

     ScriptAlias /..P7.. "proxy:unix:/run/php7-fpm.sock|fcgi://localhost" Action php7-fpm /..P7.. virtual AddHandler php7-fpm .php 

    无济于事。 虽然很不清楚为什么即使ScriptAlias不能识别协议redirect,或者mod_proxy也会检测到它。 (不幸的是,尽pipe有日志级别的信息,但是只有在日志中没有find无用的“文件”)。

那么,是否有另外一种方法来定义/绑定PHP-FPM到老式的Set / AddHandler名称或MIMEtypes?