Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/271.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Apache反向代理能否排除某些文件类型?_Php_Apache_Reverse Proxy - Fatal编程技术网

Php Apache反向代理能否排除某些文件类型?

Php Apache反向代理能否排除某些文件类型?,php,apache,reverse-proxy,Php,Apache,Reverse Proxy,我有一个Apache/Passenger组合服务于Rails 3.x,同一个组合服务于Rails 2.x,通过一个到Passenger Standalone的反向代理。我这样做的原因是Rails 2.x使用的Ruby版本比Apache/Passenger使用的Ruby版本旧 然而,Rails2.x应用程序中有一点php无法支持。(乘客讨论组赖洪丽确认)。洪丽建议从反向代理中排除“php”位 这可以做到吗?如果可以,如何做到 编辑以显示反向代理的设置方式: <VirtualHost *:8

我有一个Apache/Passenger组合服务于Rails 3.x,同一个组合服务于Rails 2.x,通过一个到Passenger Standalone的反向代理。我这样做的原因是Rails 2.x使用的Ruby版本比Apache/Passenger使用的Ruby版本旧

然而,Rails2.x应用程序中有一点php无法支持。(乘客讨论组赖洪丽确认)。洪丽建议从反向代理中排除“php”位

这可以做到吗?如果可以,如何做到


编辑以显示反向代理的设置方式:

<VirtualHost *:80>
   ServerName gtt
   DocumentRoot /home/purvez/www/gtt/public
   RailsEnv development
   PassengerEnabled off
   ProxyPass / http://127.0.0.1:3000/
   ProxyPassReverse / http://127.0.0.1:3000/
</VirtualHost>
<VirtualHost *:80>
   ServerName testapp
   DocumentRoot /home/purvez/www/testapp/public
   RailsEnv development
</VirtualHost>

服务器名gtt
DocumentRoot/home/purvez/www/gtt/public
RailsEnv开发
乘客逃走了
ProxyPass/http://127.0.0.1:3000/
ProxyPassReverse/http://127.0.0.1:3000/
以及如何建立一个普通站点:

<VirtualHost *:80>
   ServerName gtt
   DocumentRoot /home/purvez/www/gtt/public
   RailsEnv development
   PassengerEnabled off
   ProxyPass / http://127.0.0.1:3000/
   ProxyPassReverse / http://127.0.0.1:3000/
</VirtualHost>
<VirtualHost *:80>
   ServerName testapp
   DocumentRoot /home/purvez/www/testapp/public
   RailsEnv development
</VirtualHost>

服务器名testapp
DocumentRoot/home/purvez/www/testapp/public
RailsEnv开发

您可以使用
ProxyPassMatch
排除,如下所示:

<VirtualHost *:80>
   ServerName gtt
   DocumentRoot /home/purvez/www/gtt/public
   RailsEnv development
   PassengerEnabled off
   ProxyPassMatch .*\.php$ !
   ProxyPass / http://127.0.0.1:3000/
   ProxyPassReverse / http://127.0.0.1:3000/
</VirtualHost>

服务器名gtt
DocumentRoot/home/purvez/www/gtt/public
RailsEnv开发
乘客逃走了
ProxyPassMatch.*\.php$!
ProxyPass/http://127.0.0.1:3000/
ProxyPassReverse/http://127.0.0.1:3000/
请注意,这将导致名为
gtt
的虚拟主机中的所有“php位”从
/home/purvez/www/gtt/public
本地提供服务


希望这能让你朝着正确的方向前进。

这就是我喜欢的答案!!非常感谢。就我所知,请你解释一下ProxyPassMatch之后的字符实际上是做什么的。我猜它们是正则表达式,但我不能完全确定。再次感谢。@nexar:他们可能比我解释得更好。