2016-04-03 54 views
0

我遇到了一個關於Apache 2.4的問題,它是VirtualHost配置。Apache忽略子域的多個ServerName指令

我得到了一個子域sub.example.com和一個子域static.sub.example.com。我嘗試分配不同的DocumentRoot,但是使用下面的配置,它只會導致/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 

更新:尋找解決方案附加信息:

我在我的Web服務器之前運行的反向代理。從反向代理(也阿帕奇2.4)000-default.conf摘錄:

ProxyPass    /  http://webserver/ nocanon 
ProxyPassReverse  /  http://webserver/ 
+0

任何其他virtualhosts正在努力?看起來你根本沒有啓用虛擬主機功能。 – DevilaN

+0

我這麼認爲,是的。我用'apachectl -S'的輸出更新了我的帖子。 – Alex

+0

確保你的文件包含在httpd.conf包含指令中(它通常位於文件的底部) – DevilaN

回答

0

新增選項ProxyPreserveHost到反向代理的配置做交易:

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