我一直尝试通过 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>
答案1
使用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/