我有一个由 Apache 提供服务的 Apache Sling 应用程序。但是,当有人访问相同的 url 但 /mstarfb 在 url 的前面时,他们将通过 Passenger 由 Ruby on Rails 应用程序提供服务。我想添加第二个由 /i-metaphor 提供的 Ruby on Rails 应用程序。
这是我目前拥有和工作的内容:
<VirtualHost *:80>
ServerName beta.example.com
ProxyRequests Off
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
PassengerEnabled off
ProxyPassMatch ^/(?!mstarfb)(.*) http://127.0.0.1:8890/$1
ProxyPassReverse / http://beta.example.com:8890
DocumentRoot /home/ruby/webapps/m-star-fb/current/public
<Directory "/home/ruby/webapps/m-star-fb/current/public">
PassengerEnabled on
RailsBaseURI /mstarfb
# This relaxes Apache security settings.
AllowOverride all
# MultiViews must be turned off.
Options -MultiViews FollowSymLinks
Order allow,deny
Allow from all
</Directory>
第一个问题是正则表达式的外观。我尝试了各种我能想到的组合,但我不确定它们是否失败是因为正则表达式错误,还是因为我的其余配置错误。像:
ProxyPassMatch ^/(?!mstarfb|?!i-metaphor)(.*) http://127.0.0.1:8890/$1
第二个问题是如何组织虚拟主机?在我尝试过的代理行之后:
DocumentRoot /home/ruby/webapps
<Directory "/home/ruby/webapps/m-star-fb/current/public">
PassengerEnabled on
RailsBaseURI /mstarfb
AllowOverride all
Options -MultiViews FollowSymLinks
Order allow,deny
Allow from all
</Directory>
但它破坏了我的第一个应用程序......我还没有尝试添加第二个应用程序。