我一直在尝试配置我的apache服务器来支持虚拟主机,这些主机会将端口80上的任何请求重定向到Jboss AS中托管的不同应用程序,所以例如我的配置是这样的:
<VirtualHost *:80>
ServerName www.testdomain.com
ProxyPass / http://localhost:8080/contextPath
ProxyPassReverse / http://localhost:8080/contextPath
ProxyPreserveHost On
ProxyPassReverseCookiePath / /
</VirtualHost>
然而问题是,当我尝试访问http://www.testdomain.com时,url会被有效地重定向到localhost:8080,但是,我有一个重复的上下文路径。 I.E:http://www.testdomain.com/contextPath/contextPath。
任何想法为什么会发生这种情况。非常感谢。
答案 0 :(得分:2)
我遇到了同样的问题,这是通过向网址添加forwards来解决的。
ProxyPass / http://localhost:8080/contextPath/
ProxyPassReverse / http://localhost:8080/contextPath/
这为我解决了!
单个虚拟主机文件的完整示例。我有几个,每个域和子域一个。
ProxyRequests Off
ProxyPreserveHost On
<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName enter.name.here
ProxyPass / http://127.0.0.1:8080/<contextPath>/
ProxyPassReverse / http://127.0.0.1:8080/<contextPath>/
ErrorLog /var/log/apache2/somelog.log
CustomLog /var/log/apache2/somecustom.log common
</VirtualHost>
答案 1 :(得分:1)
您需要删除“ProxyPass”和“ProxyPassReverse”条目,除非您确实尝试代理某些内容。如果jboss AS在另一台服务器上,那么你需要保留代理条目,但是在我看来,如果内容在一台机器而不是倍数上,你可能会变得太难。
如果您希望一台服务器使用不同的基本文件夹作为2个不同域的根目录,则需要通过指定DocumentRoot参数来配置2个域。
例如,如果我想在一台计算机上托管google.com和yahoo.com,我的虚拟主机条目将包含:
<VirtualHost *:80>
ServerName www.google.com
DocumentRoot /var/www/Google
</VirtualHost>
<VirtualHost *:80>
ServerName www.yahoo.com
DocumentRoot /var/www/Yahoo
</VirtualHost>
然后,每个服务器的根目录将分别进入google文件夹和yahoo文件夹。
如果您尝试代理完全不同的计算机,则以下内容应该有效:
<VirtualHost *:80>
ServerName www.google.com
ProxyPass / www.google.com
</VirtualHost>
<VirtualHost *:80>
ServerName www.yahoo.com
ProxyPass / www.yahoo.com
</VirtualHost>
你的参赛作品没有多大意义。我认为应该是这样的:
<VirtualHost *:80>
ServerName www.testdomain.com
ProxyPass /contextPath http://localhost:8080
ProxyPassReverse /contextPath http://localhost:8080
</VirtualHost>