多域名访问同一主机

从去年开始就一直维护着目前的这个技术博客,前不久突然想搭建一个与技术无关的个人网站,发布一些生活上的好玩趣事、发布一些自己的摄影作品。新域名备案成功后,遇到了一个问题,如何在拥有一台服务器,一个公网IP的情况下,部署两个或多个不同的网站。经过详细了解后,总结出这篇使用Apache2配置多个虚拟主机的教程。

我们的需求

假设我们现在拥有 www.a.comwww.b.com 两个域名,以及一个拥有公网IP ( 158.58.58.58 ) 的服务器。

现在想通过不同域名访问同一个IP的服务器下,不同的根目录。例如:/var/www/a//var/www/b

第一步 : 修改hosts文件

  • 用 vim 打开 /etc/hosts 文件。
[root@yourname /]# vim /etc/hosts
  • 在文件末尾添加内容:IP地址 + 域名 (中间有空格)。

cf5b72a1ly1fkw1ieft0jj20h605wt8u.jpg

第二步 : 修改 httpd.conf

  • 修改 httpd.conf 文件,找到 NameVirtualHost *:80 ,在语句前面加 # 注释。
  • 如果配置文件是 apache2.conf 则直接跳过此步骤。

第三步 : 修改 httpd-vhosts.conf 或 000-default.conf 文件

  • 修改配置文件 httpd-vhosts.conf ,在文件末尾加入如下代码:
<VirtualHost *:80>
    DocumentRoot  /var/www/a
    ServerName    www.a.com
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot  /var/www/b
    ServerName    www.b.com
</VirtualHost>
  • 如果使用 apt-get 安装的 Apache2 ,请修改 /etc/apache2/sites-enabled/000-default.conf 文件。添加代码同上。
  • 重启 Apache :

sudo /etc/init.d/apache2 restart
sudo systemctl restart apache2

  • 虚拟主机配置结束。

验证

使用浏览器分别输入 www.a.comwww.b.com ,验证是否配置成功。

可能出现的错误

错误提示:

AH00526: Syntax error on line 5 of /etc/apache2/sites-enabled/000-default.conf:
Invalid command 'RewriteEngine', perhaps misspelled or defined by a module not included in the server configuration
Action 'configtest' failed.

解决方法:

  • RewriteEngine命令需要rewrite mod的支持
$>cd /etc/apache2/mods-enabled
$>sudo ln -s ../mods-available/rewrite.load rewrite.load
$>sudo /etc/init.d/apache2 restart

扫描二维码,在手机上阅读

标签: none

添加新评论