Apache 虚拟主机配置不适用于一个主机

Apache 虚拟主机配置不适用于一个主机

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

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

httpd.conf 有 server1(jboss 上的 app1)的定义,因此我添加了对 vhostsfile 的引用,并输入了 server2(jetty 上的 app2)的配置。问题是,如果我有对 vhostsfile 的引用,app2 可以正常工作,但 app1 永远不会被 Apache 解析 - “在此服务器上找不到请求的 URL /us/en_us”

起初,我想也许我应该将两个服务器的定义都放在 vhosts 文件中,所以我这样做了。将 server1 的定义放在 server2 下方,但是 - app1 仍然没有加载,而 app2 像以前一样加载。对 app1 的请求显示了 app2 的访问日志。

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

我希望我在这里没有造成太大的混淆。App1 仅使用 server1 的定义(无 vhost)即可工作。添加 server2 的定义(在 vhosts 中)后,app1 停止工作,但 app2 可以工作。此外,在 vhosts 文件中,无论哪个服务器的定义位于另一个之上,都会拦截对两个应用程序的请求。

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>

答案1

通过在定义中使用主机名,您会破坏基于名称的虚拟托管<VirtualHost>

<VirtualHost app1.local.com:80>和更改<VirtualHost app2.local.com:80><VirtualHost *:80>,并确保NameVirtualHost *:80在您的配置中某处有一个。

相关内容