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

Корень Apache ProxyPass для NodeJS и / admin для PHP-FPM

Я пытался обрабатывать все запросы через NodeJS, кроме тех, которые идут в каталог / admin через mod_proxy, но безуспешно.

Это конфигурация, которую я придумал, но она не работает.

<VirtualHost *:80>
    ServerName domain.com
    DocumentRoot /home/sites/domain.com/

    RewriteEngine on
    ReWriteCond %{SERVER_PORT} !^443$
    RewriteRule ^/(.*) https://%{HTTP_HOST}/$1 [NC,R,L]
</VirtualHost>

<VirtualHost *:443>
    ServerName domain.com
    DocumentRoot /home/sites/domain.com/

    ProxyRequests on
    ProxyPassMatch ^/(.*)$ http://localhost:3000/
    ProxyPassMatch ^/admin/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/home/sites/domain.com/php/public/$1 timeout=600
    ProxyTimeout 600

    SSLEngine on
    SSLCertificateFile /home/keys/domain.com.crt
    SSLCertificateKeyFile /home/keys/domain.com.key
</VirtualHost>

Когда используешь ProxyPass директивы, порядок имеет значение, поэтому вам следует переместить вторую директиву выше первой.

Кроме того, как упоминалось в комментарии ezra-s, вам нужно только добавить (.*) если вы собираетесь передать это в пункт назначения, это должно сработать:

ProxyPassMatch ^/admin/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/home/sites/domain.com/php/public/$1 timeout=600
ProxyPassMatch / http://localhost:3000/