Apache-2.4

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

  • March 21, 2017

我一直在嘗試通過 NodeJS 處理所有請求,除了那些通過 mod_proxy 進入 /admin 目錄的請求,但沒有成功。

這是我想出的配置,但它不起作用。

<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/

引用自:https://serverfault.com/questions/839593