[apache] virtual host 虛擬網站/虛擬主機

最近買了 domain,比如 xxxx.com

但我們可能想設個人網站為 personal.xxxx.com,部落格網站為 blog.xxxx.com

然而這兩個網站都對應到同一台主機,這時候我們就需要 virtual host的 功能了。


  1. 複製/etc/apache2/sites-available/000-default.conf
    <VirtualHost *:80>
     # The ServerName directive sets the request scheme, hostname and port that
     # the server uses to identify itself. This is used when creating
     # redirection URLs. In the context of virtual hosts, the ServerName
     # specifies what hostname must appear in the request's Host: header to
     # match this virtual host. For the default virtual host (this file) this
     # value is not decisive as it is used as a last resort host regardless.
     # However, you must set it for any further virtual host explicitly.
     #ServerName www.example.com
     ServerAdmin [email protected]
     DocumentRoot /var/www/html
     # Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
     # error, crit, alert, emerg.
     # It is also possible to configure the loglevel for particular
     # modules, e.g.
     #LogLevel info ssl:warn
     ErrorLog ${APACHE_LOG_DIR}/error.log
     CustomLog ${APACHE_LOG_DIR}/access.log combined
     # For most configuration files from conf-available/, which are
     # enabled or disabled at a global level, it is possible to
     # include a line for only one particular virtual host. For example the
     # following line enables the CGI configuration for this host only
     # after it has been globally disabled with "a2disconf".
     #Include conf-available/serve-cgi-bin.conf
  2. 創建 blog.conf,並貼上剛剛複製的內容,但更改以下內容
    ServerName blog.xxxx.com
    ServerAlias www.blog.xxxx.com
    DocumentRoot /var/www/html/blog       # 對應到 blog 的根目錄資料夾 
  3. 啟用虛擬網站
    sudo a2ensite blog.conf 
  4. 重新載入 apache 設定
    sudo service apache2 reload 
  5. 記得要設定DNS,把 blog.xxxx.com 指向你的機器IP

ps. 如果要停用設定的 virtual host
sudo a2dissite blog.conf
sudo service apache2 reload



Leave a Reply