Apache虛擬主機域名配置

Apache虛擬主機域名配置

服務器中有兩個不一樣的項目siteA和siteB,咱們須要把頂級域名www.siteA.com綁定到項目siteA,將二級域名siteB.siteA.com綁定到項目siteB中。因而,咱們使用了基於名稱的虛擬主機來進行設置。php

域名解析

首先,在對服務器進行配置以前,先確保你的域名已經進行正確的解析。針對以上的情景,咱們須要將爲頂級域名和二級域名在域名服務商中進行解析(假設服務器IP爲121.199.XXX.XXX):web

主機記錄 記錄值(IP)
siteB 121.199.XXX.XXX
www 121.199.XXX.XXX

驗證是否解析成功,能夠在瀏覽器輸入www.siteA.com/siteA 和 siteB.siteA.com/siteB,查看是否能夠訪問到相應服務器。apache

服務器配置

咱們的服務器系統爲ubuntu12,apache的web服務器,下面以該系統爲基礎對服務器配置進行說明:ubuntu

(1)安裝好apache之後默認有一個叫default的虛擬主機。在 /etc/apache2/sites-enabled中,存在一個000-default 的軟連接文件,實際鏈接的是 /etc/apache2/sites-available 目錄中的 default 文件,這是一個默認的配置文件,它指向的是服務器的站點根目錄/var/www,咱們能夠模仿該配置文件建立兩個新的虛擬主機。瀏覽器

(2)複製虛擬主機的默認配置文件,siteA的虛擬主機名稱爲www.siteA.com,siteB的虛擬主機名稱爲siteB.siteA.com,服務器

$ copy /etc/apache2/site-available/default  /etc/apache2/site-available/www.siteA.com
    $ copy /etc/apache2/site-available/default  /etc/apache2/site-available/siteB.siteA.com

複製好後,咱們打開www.siteA.com的配置文件,將其修改成以下:tcp

<VirtualHost *:80>
ServerName www.siteA.com
ServerAdmin admin@email.com

DocumentRoot /var/www/siteA
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
Allow from all
# This directive allows us to have apache2's default start page
# in /apache2-default/, but still have / go to the right place
# Commented out for Ubuntu
#RedirectMatch ^/$ /apache2-default/
</Directory>

ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>

ErrorLog /var/log/apache2/siteA_error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn

CustomLog /var/log/apache2/siteA_access.log combined
ServerSignature On

Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>

</VirtualHost>

主要更改有以上內容,具體的含義以下:
ServerName www.siteA.com:設置虛擬主機的域名,www.siteA.com能夠是你註冊的任何域名
ServerAdmin admin@mail.com:設置該虛擬主機網管員的郵件
DocumentRoot /var/www/siteA:設置該虛擬主機的主目錄路徑
ErrorLog /var/log/apache2/siteA_error.log:設置該虛擬主機的出錯信息
CustomLog /var/log/apache2/siteB_access.log combined:設置該虛擬主機的訪問信息ide

保存好後,啓用站點,重啓apache。網站

$ sudo a2ensite www.siteA.com

這時在/etc/apache2/sites-enabled 中會有指向www.siteA.com配置文件的軟鏈接。.net

$ sudo /etc/init.d/apache2 restart

如今查看是否綁定成功,在瀏覽器中輸入 www.siteA.com,看看是否自動訪問 服務器中 的項目siteA的index文件,若是是,則說明綁定成功。

二級域名的設置

二級域名siteB.siteA.com的綁定方式跟上面同樣,修改配置文件

<VirtualHost *:80>
ServerName siteB.siteA.com
ServerAdmin admin@email.com

DocumentRoot /var/www/siteB
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
Allow from all
# This directive allows us to have apache2's default start page
# in /apache2-default/, but still have / go to the right place
# Commented out for Ubuntu
#RedirectMatch ^/$ /apache2-default/
</Directory>

ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>

ErrorLog /var/log/apache2/siteB_error.log

# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn

CustomLog /var/log/apache2/siteB_access.log combined
ServerSignature On

Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>

</VirtualHost>

啓用站點,重啓apache

$ sudo a2ensite siteB.siteA.com
$ sudo /etc/init.d/apache2 restart

完成後,在瀏覽器中輸入 siteB.siteA.com,查看是否自動訪問到 siteB/index. 中。

注意:綁定域名後,項目代碼中的路徑訪問和跳轉最好不要絕對路徑,例如若是代碼中使用重定向到 http://serverName/siteA/login...,當使用域名訪問時,會跳轉到http://www.siteA.com/siteA/lo...,這時候會出現 404 NOT FOUND的錯誤,由於www.siteA.com已經綁定了siteA的目錄,這時候它會去訪問siteA/siteA/login.php的文件,該文件實際上是在siteA/login.php目錄下的。

若是你想要停用以上的站點,可使用命名:

$ sudo a2dissite www.siteA.com
$ sudo a2dissite siteB.siteA.com

重啓apache後,域名綁定就會被取消了。
具體原理說明能夠參考:http://wiki.ubuntu.org.cn/Apa...

附註說明:
域名解析的「記錄類型」說明:

記錄類型 說明
搭建網站 要將域名指向主機服務商提供的IP地址,請選擇「A記錄」;要將域名指向主機服務商提供的另外一個域名,請選擇「CNAME記錄」。
創建郵箱 須要設置「MX記錄」,根據郵箱服務商提供的MX記錄填寫。
A記錄 將域名指向一個IPv4地址(例如:10.10.10.10),須要增長A記錄
CNAME記錄 若是將域名指向一個域名,實現與被指向域名相同的訪問效果,須要增長CNAME記錄
MX記錄 創建電子郵箱服務,將指向郵件服務器地址,須要設置MX記錄
NS記錄 域名解析服務器記錄,若是要將子域名指定某個域名服務器來解析,須要設置NS記錄
TXT記錄 可任意填寫(可爲空),一般用作SPF記錄(反垃圾郵件)使用
AAAA記錄 將主機名(或域名)指向一個IPv6地址(例如:ff03:0:0:0:0:0:0:c1),須要添加AAAA記錄
SRV記錄 記錄了哪臺計算機提供了哪一個服務。格式爲:服務的名字.協議的類型(例如:_example-server._tcp)
顯性URL 將域名指向一個http(s)協議地址,訪問域名時,自動跳轉至目標地址(例如:將www.net.cn顯性轉發到www.hichina.com後,訪問www.net.cn時,地址欄顯示的地址爲:www.hichina.com)。
隱性URL 與顯性URL相似,但隱性轉發會隱藏真實的目標地址(例如:將www.net.cn隱性轉發到www.hichina.com後,訪問www.net.cn時,地址欄顯示的地址仍然爲:www.net.cn)。

「主機記錄」說明:
要將域名example.com解析爲www.example.com,在主機記錄(RR)處填寫www便可。
主機記錄就是域名前綴,常見用法有:

主機記錄類型 說明
www 將域名解析爲www.example.com,填寫www;
@ 將域名解析爲example.com(不帶www),填寫@或者不填寫;
mail 將域名解析爲mail.example.com,一般用於解析郵箱服務器;
* 泛解析,全部子域名均被解析到統一地址(除單獨設置的子域名解析);
二級域名 如:mail.example.com或abc.example.com,填寫mail或abc;
手機網站 如:m.example.com,填寫m。
相關文章
相關標籤/搜索