我有一个正在运行的生产网站分配给主机(redmine应用程序)。我需要将新应用程序添加到与子目录相同的主机中。
这是redmine应用程序的当前虚拟主机配置,它在主机的基本文件夹中运行。
<VirtualHost *:80>
ServerName redmine.hostname.com
DocumentRoot "C:/BitNami/redmine-2.5.1-1/apps/redmine/htdocs/public/"
RewriteEngine On
RewriteRule ^/(.*)$ balancer://redminecluster%{REQUEST_URI} [P,QSA]
ProxyPass / balancer://redminecluster
ProxyPassReverse / balancer://redminecluster
<Proxy balancer://redminecluster>
BalancerMember http://127.0.0.1:3001
BalancerMember http://127.0.0.1:3002
</Proxy>
</VirtualHost>
因此,此应用程序已在 redmine.hostname.com 上运行。我想添加自己的应用程序,我想让它在 redmine.hostname.com/myapp / 上运行。
无论我做了什么,我都无法做到这一点。我不能改变redmine的路径,我必须将新的应用程序添加到同一个虚拟主机。没有80以外的开放端口,所以我必须让它在 redmine.hostname.com/myapp /
运行基本上,redmine应用程序必须回复所有不以 redmine.hostname.com/myapp / 开头的请求。我的应用程序应回复所有以 redmine.hostname.com/myapp 开头的请求。
我应该使用哪些设置?
答案 0 :(得分:3)
如果您的application / myapp位于c:/ myappdir,配置apache以执行您想要的操作的最简单方法是使用此配置:
<VirtualHost *:80>
ServerName redmine.hostname.com
DocumentRoot "C:/BitNami/redmine-2.5.1-1/apps/redmine/htdocs/public/"
Alias /myapp "c:/myappdir"
ProxyPass /myapp !
ProxyPass / balancer://redminecluster/
ProxyPassReverse / balancer://redminecluster/
<Proxy balancer://redminecluster>
BalancerMember http://127.0.0.1:3001
BalancerMember http://127.0.0.1:3002
</Proxy>
</VirtualHost>
使用感叹号作为ProxyPass的目标将从代理配置中排除/ myapp,如文档here所示。此外,您不需要特殊的RewriteRule,因为您没有修改redmine的请求,ProxyPass就足够了。
答案 1 :(得分:2)
这取决于您自己的应用程序是在托管服务器本身托管,还是代理到其他服务器/进程。
如果它位于apache服务器本身,那么只需将'myapp'放入文档根目录即可。然后,您需要删除ProxyPass行并将其替换为locationmatch块
<VirtualHost *:80>
ServerName redmine.hostname.com
DocumentRoot "C:/BitNami/redmine-2.5.1-1/apps/redmine/htdocs/public/"
RewriteEngine On
RewriteRule ^/(.*)$ balancer://redminecluster%{REQUEST_URI} [P,QSA]
<LocationMatch "^(?!/myapp)">
ProxyPassMatch balancer://balancer://redminecluster
</LocationMatch>
ProxyPassReverse / balancer://redminecluster
<Proxy balancer://redminecluster>
BalancerMember http://127.0.0.1:3001
BalancerMember http://127.0.0.1:3002
</Proxy>
</VirtualHost>
因此,策略是将不匹配/ myapp的所有内容转发到您现有的redmine应用程序。匹配/ myapp的所有内容都将转到文档根目录。如果您自己的应用是代理的,那么您需要另一个位置匹配块,代理/ myapp到正确的位置。