php 设置Apache代理处理程序的基路径

9vw9lbht  于 2023-05-27  发布在  PHP
关注(0)|答案(1)|浏览(146)

我正在开发一个包含两个容器的应用程序: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容器中卷的挂载位置匹配?
我可以在nginx中设置SCRIPT_FILENAMEDOCUMENT_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中复制这种行为。

cbjzeqam

cbjzeqam1#

使用ProxyFCGISetEnvIf设置SCRIPT_FILENAME

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

相关问题