Apache-2.4
執行兩個具有兩個子域 httpd 的網站
我有一個
example.com
包含兩個子域的域:website.example.com
和cloud.example.com
. 我為他們兩個都設置了一個 A-Record 到我的伺服器的 IP 地址。我的伺服器是一個帶有 centos7 的 VPS,
/var/www/html/
每個域都有以下兩個目錄:
/var/www/html/website.example.com/
包含所有 wordpress 文件/var/www/html/cloud/
包含 ownCloud 的所有文件。我增強了我的 httpd.conf 以包含:
Listen 80 Listen 81 # Listen for virtual host requests on all IP addresses NameVirtualHost *:80 <VirtualHost *:80> DocumentRoot /var/www/html/website.example.com ServerName www.website.example.com </VirtualHost> NameVirtualHost *:81 <VirtualHost *:81> DocumentRoot /var/www/html/cloud ServerName www.cloud.example.com </VirtualHost>
現在,當我重新啟動 httpd 並執行 wget 時,我得到以下響應:
my.vps.ip.address
-> 來自 wordpress 網站的響應my.vps.ip.address:80
-> 來自 wordpress 網站的響應my.vps.ip.address:81
-> 來自云站點的響應website.example.com
-> 來自 wordpress 網站的響應cloud.example.com
-> 來自 wordpress 網站的響應。這會導致瀏覽器體驗 - > 當我
website.example.com
在瀏覽器中輸入時,我會進入我的 wordpress 網站。但是當我進入時,cloud.example.com
我也會訪問我的 wordpress 網站而不是 owncloud 網站。我錯過了什麼?
您已設置
ServerName
為www.cloud.example.com
,但嘗試使用 訪問它cloud.example.com
。你也忘記了81埠。將其設置為
cloud.example.com
或添加一個ServerAlias cloud.example.com
.您不需要
cloud.example.com
在不同的埠上設置。Apache 完全有能力在同一個埠上處理不同的 VirtualHost。只需將其留在埠 80 上即可。它應該如下所示:
Listen 80 # Listen 81 # Just stay on port 80, don't make it more complicated for the clients # Listen for virtual host requests on all IP addresses # NameVirtualHost *:80 # This is not needed anymore with Apache 2.4 <VirtualHost *:80> DocumentRoot /var/www/html/website.example.com ServerName website.example.com ServerAlias www.website.example.com </VirtualHost> <VirtualHost *:80> DocumentRoot /var/www/html/cloud ServerName cloud.example.com </VirtualHost>