Linux

Apache VHost 配置優先級?

  • May 27, 2021

所以我有2個配置文件。

mysite.conf

<VirtualHost *:80>
       ServerName      www.mysite.com
       ServerAlias     mysite.com *.mysite.com
       DocumentRoot    /var/www/mysite/www
       ErrorDocument 404 /redirect.php
   ErrorLog    logs/application/mysite.error_log
   CustomLog   logs/application/mysite.access_log Combined
</VirtualHost>

影片上傳.conf

<VirtualHost *:80>
       ServerName      upload.mysite.com
       DocumentRoot    /var/www/videouploader/www
   ErrorLog logs/application/videoupload.error_log
   CustomLog logs/application/videoupload.access_log Combined
</VirtualHost>

看,我們有大約 50 個可能的 something.mysite.com 子域,所有這些子域都做不同的事情,但它們都來自同一個文件根目錄。

我想將 *.mysite.com 保留在那裡,僅僅是因為它更乾淨,然後擁有世界上最長的 serveralias 行,而且它可以防止嘗試bananananan.mysite.com 或其他不起作用的東西。

我已經閱讀了 apache 文件,但對於這個 senario,它並沒有任何內容。有人知道怎麼做嗎?

Apache 從上到下搜尋 vhost 匹配並操作它遇到的第一個匹配。如果您重命名 videoupload.conf0videoupload.conf它,它將被閱讀mysite.conf,它應該可以正常工作。

我有一個類似的問題。<VirtualHost>解決方案是從任何其他指令的標頭中刪除域名。消除:

<VirtualHost test.blah.org:443>
ServerName test.blah.org

用。。。來代替:

<VirtualHost *:443>
ServerName test.blah.org

在標頭中使用域名會導致 apache在指令ServerAlias static-*.blah.org下優先匹配該虛擬主機而不是 my。<VirtualHost *:443>

引用自:https://serverfault.com/questions/290760