配置虚拟主机
  TEZNKK3IfmPf 2023年11月12日 23 0

配置虚拟主机
   虚拟主机在一台Web 服务器上,可以为多个独立的IP地址、域名或端口号提供不同的Web 站点。对于访问量不大的站点来说,这样做可以降低单个站点的运营成本。

子任务1 配置基于IP地址的虚拟主机

基于IP地址的虚拟主机的配置需要在服务器上绑定多个IP地址,然后配置Apache,把多个网站绑定在不同的IP地址上,访问服务器上不同的IP地址,就可以看到不同的网站。

【例1】假设Apache服务器具有192.168.10.1和192.168.10.2两个IP地址(提前在服务器中配置这两个IP地址)。现需要利用这两个IP地址分别创建两个基于IP地址的虚拟主机,要求不同的虚拟主机对应的主目录不同,默认文档的内容也不同。

  • 单击“应用程序”➙“系统工具” ➙“设置”➙”网络”,单击设置按钮配置虚拟主机,打开如图1所示的配置对话框,可以直接单击“+”添加IP地址,完成后单击“Apply”按钮。这样可以在一块网卡上配置多个IP地址,当然也可以直接在多块网卡上配置多个IP地址。 

 

配置虚拟主机

          图1    添加 多个IP地址

② 分别创建/var/www/ip1和/var/www/ip2两个主目录和默认文件。

[root@Centos7-1 ~]# mkdir   /var/www/ip1   /var/www/ip2

[root@Centos7-1 ~]# echo "this is 192.168.10.1's web.">/var/www/ip1/index.html

[root@Centos7-1 ~]# echo "this is 192.168.10.2's web.">/var/www/ip2/index.html

③ 添加/etc/httpd/conf.d/vhost.conf文件。该文件的内容如下:

[root@Centos7 ~]# vim /etc/httpd/conf.d/vhost.conf

#设置基于IP地址为192.168.10.1的虚拟主机

<Virtualhost 192.168.10.1>

DocumentRoot  /var/www/ip1        

</Virtualhost>

#设置基于IP地址为192.168.10.2的虚拟主机

<Virtualhost 192.168.10.2>

DocumentRoot /var/www/ip2

</Virtualhost>

④ SELnux设置为允许,让防火墙放行httpd服务,重启httpd服务。

[root@Centos7 ~]# setenforce 0

[root@Centos7 ~]# getenforce

Permissive

[root@Centos7 ~]# firewall-cmd --permanent --add-service=http

success

[root@Centos7 ~]# firewall-cmd --reload 

success

[root@Centos7 ~]# systemctl restart httpd

⑤ 在客户端浏览器中可以看到http://192.168.10.1和http://192.168.10.2两个网站的浏览效果如图2所示。

配置虚拟主机

 

                             图2  测试时出现默认页面                        

奇怪!为什么看到了httpd服务程序的默认首页面?

我们在尝试访问http://192.168.10.1/index.html页面时,竟然发现页面中显示“Forbidden,You don't have permission to access /index.html on this server.”。这一切都是因为主配置文件里没设置目录权限所致!!

解决方法是在/etc/httpd/conf/httpd.conf中添加有关两个网站目录权限的内容(只设置/var/www目录权限也可以

<Directory "/var/www/ip1">

    AllowOverride None

    Require all granted

</Directory>

<Directory "/var/www/ip2">

    AllowOverride None

    Require all granted

</Directory>

 子任务 2 配置基于域名的虚拟主机
   基于域名的虚拟主机的配置只需服务器有一个IP地址即可,所有的虚拟主机共享同一个IP,各虚拟主机之间通过域名进行区分。
   要建立基于域名的虚拟主机,DNS 服务器中应建立多个主机资源记录,使它们解析到同一个IP地址。例如:

www.smile.com.      IN    A       192.168.10.1
www.devil.com.       IN    A       192.168.10.1

【例2】假设Apache服务器IP地址为192.168.10.1。在本地DNS服务器中该IP地址对应的域名分别为www1.devil.com和www2.devil.com。现需要创建基于域名的虚拟主机,要求不同的虚拟主机对应的主目录不同,默认文档的内容也不同。

① 分别创建/var/www/smile和/var/www/devil两个主目录和默认文件。

[root@Centos7-1 ~]# mkdir   /var/www/www1   /var/www/www2

[root@Centos7-1 ~]# echo "www1.devil.com's web.">/var/www/www1/index.html

[root@Centos7-1 ~]# echo "www2.devil.com's web.">/var/www/www2/index.html

② 修改httpd.conf文件。添加目录权限内容如下:

<Directory "/var/www">

    AllowOverride None

    Require all granted

</Directory>

③ 修改/etc/httpd/conf.d/vhost.conf文件。该文件的内容如下(原来内容清空):

<Virtualhost 192.168.10.1>

DocumentRoot  /var/www/www1

ServerName  www1.devil.com

</Virtualhost>

 

<Virtualhost 192.168.10.1>

DocumentRoot /var/www/www2

ServerName  www2.devil.com

</Virtualhost>

④ SELnux设置为允许,让防火墙放行httpd服务,重启httpd服务。在客户端Client1上测试。要确保DNS服务器解析正确、确保给Client1设置正确的DNS服务器地址(etc/resolv.conf)。
   注意:在本例的配置中,DNS 的正确配置至关重要,一定确保 devil.com 域名及主机的

正确解析,否则无法成功。正向区域配置文件如下(参考之前发的DNS配置)。

[root@Centos7-1 devil]# vim /var/named/devil.com.zone

$TTL 1D

@       IN SOA   dns.devil.com. mail.devil.com. (

                                        0       ; serial

                                        1D      ; refresh

                                        1H      ; retry

                                        1W      ; expire

                                        3H )    ; minimum

@                IN    NS                  dns.devil.com.

@                IN    MX         10      mail.devil.com.

dns              IN    A                   192.168.10.1

www1             IN    A                   192.168.10.1

www2             IN    A                   192.168.10.1

 

 子任务3 配置基于端口号的虚拟主机
   基于端口号的虚拟主机的配置只需服务器有一个IP地址即可,所有的虚拟主机共享同一个IP,各虚拟主机之间通过不同的端口号进行区分。在设置基于端口号的虚拟主机的配置时,需要利用Listen语句设置所监听的端口。

【例3】假设Apache服务器IP地址为192.168.10.1。现需要创建基于8088和8089两个不同端口号的虚拟主机,要求不同的虚拟主机对应的主目录不同,默认文档的内容也不同,如何配置?

① 分别创建/var/www/8088和/var/www/8089两个主目录和默认文件。

[root@Centos7-1 ~]# mkdir   /var/www/8088   /var/www/8089

[root@Centos7-1 ~]# echo "8088 port‘s  web.">/var/www/8088/index.html

[root@Centos7-1 ~]# echo "8089 port‘s  web.">/var/www/8089/index.html

② 修改/etc/httpd/conf/httpd.conf文件。该文件的修改内容如下:

Listen 8088                    

Listen 8089

<Directory "/var/www">

    AllowOverride None

    Require all granted

</Directory>

③ 修改/etc/httpd/conf.d/vhost.conf文件。该文件的内容如下(原来内容清空):

<Virtualhost 192.168.10.1:8088>

        DocumentRoot    /var/www/8088

</Virtualhost>

 

<Virtualhost 192.168.10.1:8089>

        DocumentRoot /var/www/8089    

</Virtualhost>

④ 关闭防火墙和允许SELinux,重启httpd服务。然后在客户端Client1上测试。测试结果大失所望!如图3所示。

配置虚拟主机

   图3   访问192.168.10.1: 8088报错

⑤ 处理故障。这是因为firewall防火墙检测到8088和8089端口原本不属于Apache服务应该需要的资源,但现在却以httpd服务程序的名义监听使用了,所以防火墙会拒绝使用Apache服务使用这两个端口。

[root@Centos7-1 ~]# firewall-cmd --list-all

public (active)  …………<略>

  services: ssh dhcpv6-client samba dns http

  ports:

  …………<略>

[root@Centos7-1 ~]#firewall-cmd --zone=public --add-port=8088/tcp

success

[root@Centos7-1 ~]# firewall-cmd --permanent --zone=public --add-port=8089/tcp

[root@Centos7-1 ~]# firewall-cmd --permanent --zone=public --add-port=8088/tcp

[root@Centos7-1 ~]# firewall-cmd --reload

[root@Centos7-1 ~]# firewall-cmd --list-all

public (active)

  …………<略>

  services: ssh dhcpv6-client samba dns http

  ports: 8089/tcp 8088/tcp

  …………<略>

⑥ 再次在Client1上测试,结果如图4所示。

配置虚拟主机配置虚拟主机

                           图4   不同端口虚拟机的测试结果       

技巧:依次单击“Applications"→“Sundry”→“Firewall”,打开防火墙配置窗口,可以详尽地配置防火墙,包括配置 public 区域的port(端口)等,读者不妨多操作试试,定会有惊喜。

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月12日 0

暂无评论

推荐阅读
  TEZNKK3IfmPf   2024年05月31日   29   0   0 服务器
  TEZNKK3IfmPf   2024年05月17日   41   0   0 linux服务器
  TEZNKK3IfmPf   2024年05月31日   48   0   0 linux服务器
  TEZNKK3IfmPf   2024年05月31日   28   0   0 linux服务器centos
  TEZNKK3IfmPf   2024年05月31日   42   0   0 服务器java
  TEZNKK3IfmPf   2024年05月31日   36   0   0 服务器http
TEZNKK3IfmPf