问题描述
我一直在关注虚拟主机配置。理想的结果是:
-
如果有人请求http://test.myserver.com/myapp,则apache通过/var /www /myapp为他服务
-
如果请求了http://test.myserver.com/,则apache会将其重定向到端口8069。
2号正在工作,但1号却没有。有人可以帮忙吗!
<VirtualHost *:80>
ServerName test.myserver.com
Alias /myapp /var/www/myapp
<Directory /var/www/myapp>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
Allow from all
</Directory>
ProxyPass / http://localhost:8069/
ProxyPassReverse / http://localhost:8069/
</VirtualHost>
最佳思路
这就是我能够达到预期结果的方式。以下是ProxyPassMatch ^/myapp !
发挥作用的工作配置,除了(server-address)/myapp外,所有请求都正在代理到另一台服务器,该服务器是在端口8069运行的open-erp:
<VirtualHost *:80>
ServerName test.myserver.com
Alias /myapp /var/www/myapp
<Directory /var/www/myapp>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
Allow from all
</Directory>
ProxyPassMatch ^/myapp !
ProxyPass / http://localhost:8069/
ProxyPassReverse / http://localhost:8069/
CustomLog /var/log/apache2/access.log common
ErrorLog /var/log/apache2/error.log
</VirtualHost>
次佳思路
不用使用:ProxyPassMatch ^/myapp !
,您只需在定义/的前面添加另一个ProxyPass指令,如下所示:
ProxyPass /myapp !
ProxyPass / http://localhost:8069/
由于ProxyPass遵循优先级(将处理第一个匹配项),因此它将正确地重定向到目录而不是代理。