2015-03-31 41 views
0

由於Using Name-based Virtual Hosts下記錄阿帕奇:促進特定用戶的Apache的虛擬主機默認

如果沒有找到匹配的虛擬主機,然後的IP地址匹配的第一個列出的虛擬主機將被使用。

因此,第一個列出的虛擬主機是默認的虛擬主機。

目前,/var/cpanel/templates/apache2_4/main.default的模板生成DocumentRoot [% serverroot %]/htdocs這樣的默認VirtualHost(每個IP地址)。

我們反而會將爲特定用戶生成的VirtualHost設置爲默認值。完成此任務的最佳/推薦方式是什麼?

我目前的想法是將用戶的(編譯的)VirtualHost指令放在/usr/local/apache/conf/includes/pre_virtualhost_2.conf中,但是如果用戶的配置發生變化,這顯然不會被WHM管理。

有沒有更好的方法?

+0

我剛剛嘗試過'ServerAlias *'並且殘酷地發現這個指令匹配**真**任何東西,包括之前聲明的虛擬主機。一秒鐘以後,我認爲它工作! – JohnKiller 2015-04-03 14:19:00

+0

「我們反而會將爲特定用戶生成的VirtualHost設置爲默認值」。請求如何鏈接到「用戶」?所以,你說你有沒有虛擬主機的URL域的HTTP請求,並且你希望它們被路由到一個特定的用戶?所以你必須擁有使用IP地址的用戶1to1?否則沒有意義。 – spinkus 2015-04-07 08:58:42

+0

@ S.Pinkus:它沒有道理?無論主機名是什麼(除非被更具體的規則所覆蓋),我都希望所有的web請求都被路由到特定的用戶。看起來很簡單!事實上,這正是Apache文檔中引用的內容。 – eggyal 2015-04-07 14:58:25

回答

0

好了,這是我落得這樣做:

  1. 複製/var/cpanel/templates/apache2_4/main.default/var/cpanel/templates/apache2_4/main.local

  2. 編輯新創建的副本刪除默認VirtualHost指令(I線344和[% END -%]線385之前之前插入[%- IF 0 %])。

  3. 編輯/var/cpanel/conf/apache/primary_virtual_hosts.conf,以便爲所需的IP地址指定所需的默認主機的名稱。

  4. Ran /scripts/rebuildhttpdconf

  5. 手動驗證/usr/local/apache/conf/httpd.conf

  6. 良好地重新啓動Apache。

1

一般而言VirtualHost與DNS條目匹配,包括通配符。

您的情況在我看來,您似乎正在激活一個新網站,並且在DNS準備就緒後,託管功能尚未可用,因此您想臨時顯示特定的VirtualHost

我以前有類似的問題,並通過在重定向到我想要的站點的默認VirtualHost內創建一個.htaccess來解決它。

這也有一個好處,即用戶可以清楚地在瀏覽器中查看真實的主機名。

我知道這不是您想要的解決方案,但我不認爲有任何其他方法可以實現此目標,因爲這在正常使用情況下(異常行爲)的應用受到限制。

+0

不幸的是,這在我們的情況下不起作用:由所期望的「默認」VirtualHost服務的站點確定要從所請求的主機名提供的內容 - 重定向會丟失此信息(同時可以將其轉發給服務器網站,例如,通過查詢字符串參數,這個項目所產生的UX將是不可接受的)。 – eggyal 2015-04-03 15:04:19

0

我知道一個有點古老的學校,但在默認頁面上使用框架進行網址掩蓋可能是最簡單的事情嗎?

0

創建一個.htaccess,它將所有請求都代理回到本地主機,但在內部端口上。然後爲新端口添加一個Listen指令,併爲該端口添加一個VirtualHost,這是您想要的默認端口。

我應該提到這很醜,但我認爲它滿足您的需求。

0

我們目前使用的方案,其中我們首先包括具體默認虛擬主機配置文件,像這樣(即之前的任何虛擬主機定義):

Include conf.d/vhost.d/default.conf.first 
Include conf.d/vhost.d/*.conf 

conf.d/vhost.d/default.conf.first定義的虛擬主機這種方式永遠是第一位。