通过套接字的 Apache2 + php-fpm

通过套接字的 Apache2 + php-fpm

我已经相当干净地安装(并更新)了 ubuntu 16.04 LTS,并且正在尝试设置 PHP-FPM 以按域进行 chroot。我并不想在服务器上为每个域打开 n 个端口(它们是本地的,但我无论如何都不想这样做)。

但正如我所尝试的,我无法让代理通过套接字执行正确的脚本。当我用 index.php 替换 ${%SCRIPT_NAME} 时,它会加载我的索引(包含 phpinfo();),但不会加载任何其他内容 - 目前它只响应“文件未找到。”和 404 状态。我也可以[Thu Feb 15 17:18:37.581204 2018] [proxy_fcgi:error] [pid 15974] [client 10.0.0.15:60620] AH01071: Got error 'Primary script unknown\n'在 apache 日志中看到。我也不知道如何正确调试 php-fpm,因为它没有向其日志输出太多内容... :-(

但无论我做什么,我都无法让它与 index.php 或 URL 中的其他脚本(而不是配置中的脚本)一起工作。我尝试了几种所谓的解决方案,但似乎都没有用。

我在 php fpm 中有以下设置:

[domain.com]
user = 4003
group = 4001
listen = /var/run/php/domain.com.sock
chroot = /disks/sdb1/clients/clientname/domain.com
chdir = /
catch_workers_output = yes
access.log = /disks/sdb1/clients/client/logs/access.domain.com.log


listen.owner = www-data
listen.group = www-data
listen.mode = 0660

pm = dynamic
pm.max_children = 5
pm.min_spare_servers = 1
pm.max_spare_servers = 3
pm.max_requests = 500

php_admin_value[error_log] = /disks/sdb1/clients/client/logs/error.domain.com.log

和 Apache 配置:

<VirtualHost *:80>

    ServerName domain.com
    ServerAlias www.domain.com

    ServerAdmin client

    DocumentRoot /disks/sdb1/clients/client/domain.com

    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>
    CustomLog /var/log/apache2/domain.com-access.log combined
    ErrorLog /var/log/apache2/domain.com-error.log

    <Directory /disks/sdb1/clients/client/domain.com>
        Options FollowSymLinks
        AllowOverride All
        <IfModule !mod_authz_core.c>
            Order allow,deny
            Allow from all
        </IfModule>
        <IfModule mod_authz_core.c>
            Require all granted
        </IfModule>
    </Directory>

        SetEnv HOME "/disks/sdb1/clients/client/domain.com"
        SetEnv HTTP_HOME "/disks/sdb1/clients/client/domain.com"
    <FilesMatch \\.php$>
        SetHandler "proxy:unix:/run/php/domain.com.sock|fcgi://localhost/${%SCRIPT_NAME}"
    </FilesMatch>
#Use PHP-FPM for PHP processing
#SetEnv PATH_INFO "%{SCRIPT_NAME}"
#ProxyPassMatch ^(.*)$ "unix://var/run/php/domain.com.sock|fcgi://localhost//$1" enablereuse=on

</VirtualHost>

相关内容