您的位置:首页 > 理论基础 > 计算机网络

HTTPD 虚拟主机及完成配置示例

2019-08-04 19:58 155 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/weixin_44983653/article/details/98472866

HTTPD 虚拟主机及完成配置示例

  • 基于IP的虚拟主机的完整示例
  • 基于端口的虚拟主机的完整示例
  • 虚拟主机

    站点标识: socket

    IP相同,但端口不同
    IP不同,但端口均为默认端口
    FQDN不同: 请求报文中首部 Host: www.magedu.com

    虚拟主机有三种实现方案:

    基于ip:为每个虚拟主机准备至少一个ip地址
    基于port:为每个虚拟主机使用至少一个独立的port
    基于FQDN:为每个虚拟主机使用至少一个FQDN

    **注意(专用于httpd-2.2):**一般虚拟机不要与中心主机混用;因此,要使用虚拟主机,得先禁用’main’主机;禁用方法:注释中心主机的DocumentRoot指令即可。

    虚拟主机的配置方法

    <VirtualHost  IP:PORT>
    ServerName FQDN
    DocumentRoot  ""
    </VirtualHost>

    其它可用指令:

    ServerAlias     # 虚拟主机的别名;可多次使用
    ErrorLog        # 单独指定错误日志的存放位置
    CustomLog       # 单独指定访问日志的存放位置
    <Directory "">
    ..
    </Directory>
    Alias
    ...

    基于IP的虚拟主机示例

    <VirtualHost 172.16.100.6:80>
    ServerName www.a.com
    DocumentRoot "/www/a.com/htdocs"
    </VirtualHost>
    
    <VirtualHost 172.16.100.7:80>
    ServerName www.b.net
    DocumentRoot "/www/b.net/htdocs"
    </VirtualHost>
    
    <VirtualHost 172.16.100.8:80>
    ServerName www.c.org
    DocumentRoot "/www/c.org/htdocs"
    </VirtualHost>

    基于端口的虚拟主机

    <VirtualHost 172.16.100.6:80>
    ServerName www.a.com
    DocumentRoot "/www/a.com/htdocs"
    </VirtualHost>
    
    <VirtualHost 172.16.100.6:808>
    ServerName www.b.net
    DocumentRoot "/www/b.net/htdocs"
    </VirtualHost>
    
    <VirtualHost 172.16.100.6:8080>
    ServerName www.c.org
    DocumentRoot "/www/c.org/htdocs"
    </VirtualHost>

    基于FQDN的虚拟主机

    <VirtualHost 172.16.100.6:80>
    ServerName www.a.com
    DocumentRoot "/www/a.com/htdocs"
    </VirtualHost>
    
    <VirtualHost 172.16.100.6:80>
    ServerName www.b.net
    DocumentRoot "/www/b.net/htdocs"
    </VirtualHost>
    
    <VirtualHost 172.16.100.6:80>
    ServerName www.c.org
    DocumentRoot "/www/c.org/htdocs"
    </VirtualHost>

    基于IP的虚拟主机的完整示例

    IP地址 域名 文档根
    192.168.1.10 www.neo.com
    /data/web/neo/
    192.168.1.100 www.tang.com
    /data/web/tang/

    1、创建文档根和主页

    [root@neo ~]# cat /data/web/neo/index.html
    <h1>This is neo's website!</h1>
    [root@neo ~]# cat /data/web/tang/index.html
    <h1>This is tang's website!</h1>

    2、修改本机的 hosts 文件,并配置本机的 IP 地址

    [root@neo ~]# ip addr list  | grep "inet\>" | grep -v 127.0.0.1 | grep -v 192.168.10.5
    inet 192.168.1.10/24 brd 192.168.1.255 scope global noprefixroute dynamic ens33
    inet 192.168.1.100/32 scope global ens33
    [root@neo ~]# cat /etc/hosts
    192.168.1.10 www.neo.com
    192.168.1.100 www.tang.com

    3、配置 HTTPD 主配置文件,进行语法检查,并重启服务

    [root@Neo ~]# vim /etc/httpd/conf/httpd.conf
    <VirtualHost 192.168.1.10:80>
    ServerName www.neo.com
    DocumentRoot "/data/web/neo"
    <Directory  "/data/web/neo">
    AllowOverride None
    Options None
    Require all granted
    </Directory>
    </VirtualHost>
    
    <VirtualHost 192.168.1.100:80>
    ServerName www.tang.com
    DocumentRoot "/data/web/tang"
    <Directory  "/data/web/tang">
    AllowOverride None
    Options None
    Require all granted
    </Directory>
    </VirtualHost>
    [root@Neo ~]# httpd -t
    Syntax OK
    [root@Neo ~]# systemctl restart httpd.service

    4、通过浏览器访问,进行验证


    基于端口的虚拟主机的完整示例

    IP地址 域名 文档根
    192.168.1.10:80 www.neo.com
    /data/web/neo/
    192.168.1.10:8080 www.tang.com
    /data/web/tang/

    1、创建文档根和主页

    [root@neo ~]# cat /data/web/neo/index.html
    <h1>This is neo's website!</h1>
    [root@neo ~]# cat /data/web/tang/index.html
    <h1>This is tang's website!</h1>

    2、修改本机的 hosts 文件,并配置本机的 IP 地址和 iptables

    [root@neo ~]# ip addr list  | grep "inet\>" | grep -v 127.0.0.1 | grep -v 192.168.10.5
    inet 192.168.1.10/24 brd 192.168.1.255 scope global noprefixroute dynamic ens33
    [root@neo ~]# cat /etc/hosts
    192.168.1.10:80 www.neo.com
    192.168.1.10:8080 www.tang.com
    [root@Neo ~]# iptables -I INPUT -p TCP --dport 80 -j ACCEPT
    [root@Neo ~]# iptables -I INPUT -p TCP --dport 8080 -j ACCEPT

    3、配置 HTTPD 主配置文件,进行语法检查,并重启服务

    [root@Neo ~]# vim /etc/httpd/conf/httpd.conf   # 进行虚拟主机配置,并且配置监听接口
    VirtualHost 192.168.1.10:80>
    ServerName www.neo.com
    DocumentRoot "/data/web/neo"
    <Directory  "/data/web/neo">
    AllowOverride None
    Options None
    Require all granted
    </Directory>
    </VirtualHost>
    
    Listen 80
    
    <VirtualHost 192.168.1.10:8080>
    ServerName www.tang.com
    DocumentRoot "/data/web/tang"
    <Directory  "/data/web/tang">
    AllowOverride None
    Options None
    Require all granted
    </Directory>
    </VirtualHost>
    
    Listen 8080
    [root@Neo ~]# httpd -t
    Syntax OK
    [root@Neo ~]# systemctl restart httpd.service
    
    [root@Neo ~]# ss -tnl             # 两个监听端口
    State       Recv-Q Send-Q    Local Address:Port              Peer Address:Port
    LISTEN      0      128                   *:22                           *:*
    LISTEN      0      100           127.0.0.1:25                           *:*
    LISTEN      0      128                  :::8080                        :::*
    LISTEN      0      128                  :::80                          :::*
    LISTEN      0      32                   :::21                          :::*
    LISTEN      0      128                  :::22                          :::*
    LISTEN      0      100                 ::1:25                          :::*

    4、通过浏览器访问,进行验证


    内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
    标签: