Проблема с обратным прокси и форматом FastCGI URI (PHP-FPM на сокете unix) - PullRequest
0 голосов
/ 27 ноября 2018

Попытка настроить Apache 2.4 с прокси-сервером PHP-FPM, прослушивая сокет unix.Следующая базовая конфигурация работает правильно:

<VirtualHost *:80>
DocumentRoot "/srv/httpd/htdocs"
ServerName example.tld
ProxyPassMatch "^/(.*\.php(/.*)?)$" "unix:/var/run/php-fpm.sock|fcgi://localhost/srv/httpd/htdocs/"
</VirtualHost>

Теперь я бы хотел изменить ProxyPassMatch для особого случая.Когда URI после домена начинается с test, вставьте /special/ в путь к целевому пути:

<VirtualHost *:80>
# -- snip --
ProxyPassMatch "^/test/(.*\.php(/.*)?)$" "unix:/var/run/php-fpm.sock|fcgi://localhost/srv/httpd/htdocs/test/special/$1"
</VirtualHost>

Однако произойдет сбой со следующей ошибкой отладки:

[Mon Nov 26 21:38:31.484668 2018] [proxy:error] [pid 14779:tid 
140031510611712] (111)Connection refused: AH00957: FCGI: attempt to connect to 127.0.0.1:8000 (*) failed
[Mon Nov 26 21:38:31.484707 2018] [proxy_fcgi:error] [pid 14779:tid 
140031510611712] [client ::1:55464] AH01079: failed to make connection to backend: 127.0.0.1

Нигде нетлюбой из файлов конфигурации Apache, например, указанный как порт 8000.

Он ведет себя таким образом, только если целевой URL является сокетом домена unix и путь к сценарию содержит ссылку на захват regexp $N.

unix:/var/run/php-fpm.sock|fcgi://localhost/srv/httpd/htdocs/test/special/$1

Если опустить перехват регулярных выражений или использовать TCP URI вместо сокета, попытка подключения к 127.0.0.1:8000 не производится.

Официальная документация мне неясно, в каком формате fcgi в этом случае.Возможная ошибка в реализации?

Как правильно отобразить URL запроса в сокет unix при использовании захваченной ссылки из шаблона RE?

...