作者:网络傅老师

特别提示:未经作者允许,不得转载任何内容。违者必究!

Debian如何配置Apache2(2)虚拟主机

《傅老师Debian小知识库系列之22》——原创


==前言==


一、概念

    通常一台Apache服务器上要运行多个网站(虚拟主机),配置虚拟主机有多种方法,本篇分别介绍。

二、前置知识

实现虚拟主机通常有以下3种方法:

1、不同IP地址

如果你的Apache服务器的IP地址阔绰,那么每个虚拟主机都可以对应1个IP地址,客户端通过不同IP地址就能访问不同的网站。

2、相同IP地址、不同端口号

如果你的Apache服务器只有1个IP地址。那么就无法通过IP地址区分不同的虚拟主机,此时可以用上不同的端口号。客户端通过IP:端口的格式就能访问不同的网站,例如“http://123.4.5.6:7890”。显然,这种方式对于用户不太友好。

3、相同IP地址和端口号、不同的FQDN

显然,这种方式对用户最友好,实际工作中用的也最多。用户只需通过类似于“www.fu.com”这种FQDN访问网站就行了,Apache接收到请求后,会由不同的虚拟主机响应。

三、操作方法

1、不同IP地址

先给网卡配置第2个IP地址192.168.9.75/24,可使用nmtui工具,方法略。

(1)创建2个测试网站的目录和首页

root@Debian:~# mkdir -p /var/www/fu1
root@Debian:~# mkdir -p /var/www/fu2
root@Debian:~# echo "<h1>www.fu1.com</h1>" > /var/www/fu1/index.html
root@Debian:~# echo "<h1>www.fu2.com</h1>" > /var/www/fu2/index.html

(2)编辑虚拟主机配置文件

root@Debian:~# nano /etc/apache2/sites-available/vhosts.conf

内容如下

<VirtualHost 192.168.9.57:80>                 //监听192.168.9.57:80
    ServerName www.fu1.com
    DocumentRoot /var/www/fu1/                //网站目录
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
    <Directory /var/www/fu1/>
        Require all granted                   //授予允许访问权限
    </Directory>
</VirtualHost>

<VirtualHost 192.168.9.75:80>                 //监听192.168.9.57:80
    ServerName www.fu2.com
    DocumentRoot /var/www/fu2/                //网站目录
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
    <Directory /var/www/fu2/>
        Require all granted
    </Directory>
</VirtualHost>

(3)关闭默认网站,启用虚拟主机

命令a2dissite是禁用、a2ensite是启用

root@Debian:~# a2dissite 000-default.conf                //关闭默认网站
Site 000-default disabled.
To activate the new configuration, you need to run:
  systemctl reload apache2
root@Debian:~# a2ensite vhosts.conf                   //启用虚拟主机
Enabling site vhosts.
To activate the new configuration, you need to run:
  systemctl reload apache2
root@Debian:~# systemctl restart apache2                //重启apache服务

(4)客户端验证

可以看到不同的IP访问不同的网站。如图22.1所示。

22 Debian如何配置Apache2(2)虚拟主机-LMLPHP

图22.1 不同IP的虚拟主机

2、相同IP地址、不同端口号

    还用上面两个测试网站,修改一下其虚拟主机配置文件,使用相同IP,其中fu1使用默认的80端口、fu2使用12345端口。然后指定Apache监听相关端口号。

(1)修改虚拟主机配置文件

root@Debian:~# nano /etc/apache2/sites-enabled/vhosts.conf

内容如下:

<VirtualHost 192.168.9.75:80>                   //相同IP,80端口
    ServerName www.fu1.com
    DocumentRoot /var/www/fu1/
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
    <Directory /var/www/fu1/>
        Require all granted
    </Directory>
</VirtualHost>

<VirtualHost 192.168.9.75:12345>                   //相同IP,12345端口
    ServerName www.fu2.com
    DocumentRoot /var/www/fu2/
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
    <Directory /var/www/fu2/>
        Require all granted
    </Directory>
</VirtualHost>

(2)指定监听端口

root@Debian:~# nano /etc/apache2/ports.conf

内容如下:

Listen 80
Listen 12345                  //指定监听12345端口
<IfModule ssl_module>
        Listen 443
</IfModule>

<IfModule mod_gnutls.c>
        Listen 443
</IfModule>
root@Debian:~# systemctl restart apache2             //重启服务

(3)客户端验证

可以看到,fu1网站是默认80端口、fu2网站是12345端口,2个网站的IP都是192.168.9.75,如图22.2所示。

22 Debian如何配置Apache2(2)虚拟主机-LMLPHP

图22.2 相同IP不同端口号的虚拟主机

3、相同IP和端口、不同FQDN

(1)修改虚拟主机配置文件

root@Debian:~# nano /etc/apache2/sites-enabled/vhosts.conf

内容如下:

<VirtualHost 192.168.9.75:80>                    //相同IP和端口
    ServerName www.fu1.com                   //指定FQDN
    DocumentRoot /var/www/fu1/
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
    <Directory /var/www/fu1/>
        Require all granted
    </Directory>
</VirtualHost>

<VirtualHost 192.168.9.75:80>                    //相同IP和端口
    ServerName www.fu2.com                   //指定FQDN
    DocumentRoot /var/www/fu2/
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
    <Directory /var/www/fu2/>
        Require all granted
    </Directory>
</VirtualHost>
root@Debian:~# systemctl restart apache2             //重启Apache

(2)配置域名解析

配置区域——

root@Debian:~# nano /etc/bind/named.conf.local

内容如下:

zone "fu1.com" {
type master;
file "/etc/bind/db.fu1.com";
};

zone "fu2.com" {
type master;
file "/etc/bind/db.fu2.com";
};

配置区域数据文件——

root@Debian:~# nano /etc/bind/db.fu1.com

内容如下:

……省略部分内容
@       IN      NS      Debian.fu1.com.
Debian  IN      A       192.168.9.75
www     IN      A       192.168.9.75
root@Debian:~# nano /etc/bind/db.fu2.com

内容如下:

……省略部分内容
@       IN      NS      Debian.fu2.com.
Debian  IN      A       192.168.9.75
www     IN      A       192.168.9.75
root@Debian:~# systemctl restart bind9       //重启bind9服务

(3)客户端验证

可以看到通过不同的FQDN访问不同虚拟主机,如图22.3所示。

22 Debian如何配置Apache2(2)虚拟主机-LMLPHP

图22.3 不同FQDN访问的虚拟主机

OK,这些就是在Apache2中实现多个虚拟主机的方法,第三种方案用的最多,当然同学们也可根据实际情况选择其他的方案。快试一下吧~~

尾部有傅老师的微信名片

欢迎沟通交流:)

05-07 04:25