Apache虚拟主机configuration不适用于一个主机

我是configurationApache的新手。 我有两个需要在本地运行的应用程序,它们运行在不同的服务器上 – 一个在jboss上,另一个在Jetty上。 现在他们都使用相同的Apache服务器来提供静态文件。

我用jboss和jetty服务器解决了http端口(8080)和ajp端口(8009)的问题。 这两个服务器启动时没有端口冲突。 接下来是Apache的configuration部分。

httpd.conf具有server1(jboss上的app1)的定义,所以我添加了对vhosts文件的引用,并将其放入server2(jetty上的app2)的configuration中。 问题是如果我有vhosts文件的引用,app2工作正常,但app1永远不会被Apache解决 – “在此服务器上找不到请求的URL / us / en_us”

起初我想也许我应该把这两个服务器的定义在虚拟主机文件,所以我做了。 把服务器1的定义放在server2下面,但是 – app1仍然没有加载,而app2像以前一样加载。 对app1的请求显示了app2的访问日志。

然后在vhosts文件中,我交换了定义,即将server1的定义放在server2之上,现在这两个应用程序都没有在浏览器中加载。

我希望我在这里不太困惑。 只有server1的定义(无虚拟主机)的App1的作品。 在添加server2的定义(在虚拟主机),app1停止工作,但app2的确工作。 此外,哪个服务器的定义高于另一个在虚拟主机文件截获到两个应用程序的请求。

NameVirtualHost *:80 <VirtualHost *:80> ServerAdmin [email protected] DocumentRoot "C:/env/local/cust/httpd/docs/dummy-host.com" ServerName dummy-host.com ServerAlias www.dummy-host.com ErrorLog "logs/dummy-host.com-error.log" CustomLog "logs/dummy-host.com-access.log" common </VirtualHost> <VirtualHost app2.local.com:80> ServerAdmin [email protected] DocumentRoot "C:/app2" ServerName app2.local.com ErrorLog "logs/store-error.log" CustomLog "logs/store-access.log" common <Directory "C:/app2"> Options Indexes FollowSymLinks AllowOverride None Order allow,deny Allow from all </Directory> </VirtualHost> <VirtualHost app1.local.com:80> ServerAdmin [email protected] DocumentRoot "C:/workspace/app1" ServerName app1.local.com ErrorLog "logs/app1-error.log" CustomLog "logs/app1-access.log" common <Directory "C:/app1/"> Options Indexes FollowSymLinks AllowOverride all Order allow,deny Allow from all </Directory> </VirtualHost> 

通过在<VirtualHost>定义中包含主机名,可以打破基于名称的虚拟主机。

<VirtualHost app1.local.com:80><VirtualHost app2.local.com:80>更改为<VirtualHost *:80> ,并确保您的configuration中有某个NameVirtualHost *:80