Apache ProxyPass根到NodeJS和/ admin到PHP-FPM

我一直试图通过NodeJS处理所有的请求,除了通过mod_proxy进入/ admin目录,但没有成功。

这是我想出的configuration,但它不工作。

<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指令时,sorting很重要,所以你应该把第二个指令移到第一个指令的上面。

另外,正如ezra-s在他们的评论中所提到的,如果你打算把它传递到目的地,你只需要添加(.*) ,这应该工作:

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