更改 Apache 代理处理程序中的脚本路径

更改 Apache 代理处理程序中的脚本路径

我正在使用两个容器开发我的应用程序:阿帕奇php-fpm

Apache 处理请求,并将 PHP 执行委托给其 vhost 中的 php-fpm 容器:

    <FilesMatch .php$>
        SetHandler "proxy:fcgi://myapp-php-fpm:9000"
    </FilesMatch>

这两个容器共享一个包含应用程序代码的卷。

该卷的位置在每个容器中都是不同的:

  • apache 将应用程序代码卷挂载在/home/wwwdata/myapp
  • php-fpm 将应用程序代码卷挂载在/var/task

我如何更改 Apache 发送到 php-fpm 容器的脚本路径,以便它与 php-fpm 容器中卷的安装位置相匹配?


SCRIPT_FILENAME我可以通过设置和在 nginx 中做到这一点DOCUMENT_ROOT

        location ~ ^/index\.php(/|$) {
          fastcgi_pass myapp-php-fpm:9000;
          fastcgi_split_path_info ^(.+\.php)(/.*)$;
          include fastcgi_params;

          fastcgi_param SCRIPT_FILENAME /var/task/$fastcgi_script_name;
          fastcgi_param DOCUMENT_ROOT /var/task;

          internal;
        }

但我无法在 Apache 中复制此行为。

答案1

用于ProxyFCGISetEnvIf设置SCRIPT_FILENAME

    <FilesMatch .php$>
        ProxyFCGISetEnvIf "true" SCRIPT_FILENAME "/var/task%{reqenv:SCRIPT_NAME}"
        SetHandler "proxy:fcgi://myapp-php-fpm:9000"
    </FilesMatch>

相关内容