Apache忽略子域的多个ServerName指令

时间:2016-04-03 18:56:53

标签: apache

我遇到了关于Apache 2.4及VirtualHost配置的问题。

我有一个子域名sub.example.com和一个子域名static.sub.example.com。我尝试分配不同的DocumentRoots,但是在我的配置下方只会导致/var/www/html/

<VirtualHost *:80>
    ServerName sub.example.com
    DocumentRoot /var/www/html/
</VirtualHost>

<VirtualHost *:80>
    ServerName static.sub.example.com
    DocumentRoot /var/www/html/static/
</VirtualHost>

我做错了什么?

其他信息:上面的配置位于一个文件/etc/apache2/sites-available/000-default.conf中,当然已启用(默认情况下)。所有其他配置默认值不变。服务器在Ubuntu 14.04上运行。

我找到this solution,但不幸的是,它对我不起作用。

更新: apachectl -S的输出:

AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 172.19.0.3. Set the 'ServerName' directive globally to suppress this message
VirtualHost configuration:
*:80                   is a NameVirtualHost
     default server sub.example.com (/etc/apache2/sites-enabled/000-default.conf:1)
     port 80 namevhost sub.example.com (/etc/apache2/sites-enabled/000-default.conf:1)
     port 80 namevhost static.sub.example.com (/etc/apache2/sites-enabled/000-default.conf:6)
ServerRoot: "/etc/apache2"
Main DocumentRoot: "/var/www"
// Some more lines that are not related I think

更新有关查找解决方案的其他信息:

我在我的网络服务器前面运行了一个反向代理。从000-default.conf反向代理(也是Apache 2.4)中提取:

ProxyPass               /       http://webserver/ nocanon
ProxyPassReverse        /       http://webserver/

1 个答案:

答案 0 :(得分:0)

添加选项ProxyPreserveHost以反转代理的配置完成交易:

ProxyPreserveHost       On
ProxyPass               /       http://webserver/ nocanon
ProxyPassReverse        /       http://webserver/