Назад | Перейти на главную страницу

Настройте Apache с определенным пулом php-fpm на основе метода HTTP-запроса

Я работаю с Apache / 2.4.41 в коробке CentOS 7.6. У меня есть два разных пула php-fpm, работающих и прослушивающих разные порты, и я пытаюсь Apache отправлять запросы POST, PUT и DELETE в один пул, а остальные - в другой пул.

Я пробовал с "если" директива и локальные переменные Apache, но похоже, что "if" оценивается до того, как можно будет использовать Переменные HTTP (в частности, REQUEST_METHOD) вот так:

<VirtualHost *:80>
...
    <If "%{REQUEST_METHOD} in {'POST','PUT','DELETE'}">
        Define php_pool_port 10000
    </If>
    <Else>
        Define php_pool_port 10001
    </Else>
...
    <FilesMatch ".+\.php$">
        SetHandler "proxy:fcgi://127.0.0.1:${php_pool_port}"
    </FilesMatch>
...
</VirtualHost>

Я также безуспешно пробовал с SetEnvIf:

<VirtualHost *:80>
...
    SetEnvIf %{REQUEST_METHOD} "POST" PHP_POOL_PORT=10000
    SetEnvIf %{REQUEST_METHOD} "!POST" PHP_POOL_PORT=10001
...
    <FilesMatch ".+\.php$">
        SetHandler "proxy:fcgi://127.0.0.1:${PHP_POOL_PORT}"
    </FilesMatch>
</VirtualHost>

Я пытаюсь избежать необходимости определять новый раздел и предотвратить установку дополнительных модулей, но на данный момент я думаю, что один из них действительно может быть требованием.

Есть идеи, предложения и / или комментарии?

Спасибо!