热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

基于域名、端口和IP的虚拟主机构建方案

本文探讨了在单台物理服务器上构建多个Web站点的虚拟主机方案,详细介绍了三种主要的虚拟主机类型:基于域名、基于IP地址和基于端口的虚拟主机。每种类型的实现方式及其优缺点均进行了深入分析,为实际应用提供了全面的技术指导。
虚拟web主机

在同一台物理服务器中运行多个web站点,其中每一个站点并不独立占用一台真正的计算机

httpd支持的虚拟主机类型
*   基于域名的虚拟主机
*   基于IP地址的虚拟主机
*   基于端口的虚拟主机

技术图片

案例一——基于域名
  • 构建2个虚拟web站点

    www.accp.com  ip地址为本机地址
    www.kgc.com    ip地址为本机地址
  • 在浏览器中访问这两个域名时,分别显示不同的内容

    实验环境

    一台Linux主机做服务器
    一台win7主机做测试

1,安装http和dns服务

    [root@localhost ~]# yum install httpd bind -y  //安装http,dns服务

2,配置dns主配置文件

    [root@localhost ~]# vim /etc/named.conf   ##主配置文件

    options {
                    listen-on port 53 { any; };      ##将本机监听为所有
                    listen-on-v6 port 53 { ::1; };
                    directory       "/var/named";
                    dump-file       "/var/named/data/cache_dump.db";
                    statistics-file "/var/named/data/named_stats.txt";
                    memstatistics-file "/var/named/data/named_mem_stats.txt";
                    recursing-file  "/var/named/data/named.recursing";
                    secroots-file   "/var/named/data/named.secroots";
                    allow-query     { any; };      ##允许所有

3,配置区域配置文件(etc/named.rfc1912.zones)

[root@localhost ~]# vim /etc/named.rfc1912.zones  ##配置区域配置文件
zone "localhost" IN {             ##复制两个模板到下面
                type master;
                file "named.localhost";
                allow-update { none; };
};

zone "accp.com" IN {            ##修改localhost为accp.com
                type master;
                file "accp.com.zone";    ##创建区域数据配置文件
                allow-update { none; };
};

zone "kgc.com" IN {              ##修改localhost为kgc.com
                type master;
                file "kgc.com.zone";      ##创建区域数据配置文件
                allow-update { none; };
};

4,编辑区域数据配置文件(accp.com.zone kgc.com.zone)

[root@localhost ~]# cd /var/named/     ##切换到/var/named目录下  
[root@localhost named]# cp -p named.localhost accp.com.zone   
##复制模板为accp.com.zone
[root@localhost named]# vim accp.com.zone  ##编辑区域数据配置文件

$TTL 1D
@       IN SOA  @ rname.invalid. (
                                                                                0       ; serial
                                                                                1D      ; refresh
                                                                                1H      ; retry
                                                                                1W      ; expire
                                                                                3H )    ; minimum
                NS      @
                A       127.0.0.1
www IN  A       192.168.13.133   ##删除ipv6 添加域名解析地址为本机
[root@localhost named]# cp -p accp.com.zone  kgc.com.zone
##编辑kgc的区域数据配置文件,内容不需要更改

5,关闭防火墙并开启服务

[root@localhost named]# systemctl start named   ##开启dns服务
[root@localhost named]# systemctl stop firewalld.service    ##关闭防火墙
[root@localhost named]# setenforce 0   ##关闭增强功能

6,进入win7测试主机中,修改DNS解析服务器,查看是否可以解析

技术图片
技术图片

7,在Linux中创建一个http扩展配置文件

[root@localhost named]# cd /etc/httpd/conf   ##切换到http配置目录中
[root@localhost named]# mkdir extra     ##创建扩展配置文件目录
[root@localhost named]# cd extra
[root@localhost named]# vim vhost.conf   ##编辑扩展配置文件

         ##标签 *所有ip 80端口
    Documentroot "/var/www/html/accp/"    ##站点目录
    ServerName www.accp.com                 ##域名
    Errorlog "logs/www.accp.com.error_log"    ##错误日志文件
    Customlog "logs/www.accp.com.access_log" common  ##访问日志
                    ##控制目录权限
        Require all granted                           ##允许所有人可以访问
    

##上面的logs是软连接/var/log/httpd     ##下面的只要修改accp为kgc即可
    
        Documentroot "/var/www/html/kgc/"
        ServerName www.kgc.com
        Errorlog "logs/www.kgc.com.error_log"
        Customlog "logs/www.kgc.com.access_log" common
        
            Require all granted
        
    

8,到网页站点中,创建accp和kgc的网页主页内容文件

[root@localhost extra]# cd /var/www/html/   ##切换到网页站点中
[root@localhost html]# mkdir accp kgc        ##创建两个网站的站点目录
[root@localhost html]# cd accp/ 
[root@localhost accp]# vim index.html        ##编辑accp网页内容
this is a accp web

[root@localhost html]# cd kgc/
[root@localhost accp]# vim index.html        ##编辑kgc网页内容
this is a kgc web

9,将http扩展配置文件加载到主配置文件中,并开启http服务

[root@localhost www]# cd /etc/httpd/conf    ##切换到http的配置文件目录
[root@localhost conf]# vim httpd.conf     ##编辑主配置文件
Include conf/extra/vhost.conf                  ##在末行加入扩展配置文件目录
[root@localhost conf]# systemctl start httpd     ##启动http服务

10,使用域名进行页面访问

技术图片
技术图片

案例二——基于端口

1,配置扩展配置文件内容

[root@lolocalhost extra]# vim vhost.conf
    
        Documentroot "/var/www/html/kgc/"
        ServerName www.kgc.com
        Errorlog "logs/www.kgc.com.error_log"
        Customlog "logs/www.kgc.com.access_log" common
        
            Require all granted
        
    

            ##端口号改成8080
        Documentroot "/var/www/html/kgc02/"       ##目录更改为02
        ServerName www.kgc.com
        Errorlog "logs/www.kgc02.com.error_log"           ##日志文件更改为02
        Customlog "logs/www.kgc02.com.access_log" common
        
            Require all granted
        
    

2,编辑网站目录和网站内容

[root@localhost extra]# cd /var/www/html/
[root@localhost html]# mkdir kgc02
[root@localhost html]# vim index.html     ##编辑kgc02网页的内容
this is a kgc02 web

3,配置http主配置文件,修改监听端口,并重启网络服务

[root@localhost html]# vim /etc/httpd/conf/httpd.conf     ##修改配置文件
Listen 192.168.13.133:80               ##修改ipv4监听端口
Listen 192.168.13.133:8080
#Listen 80      ##将ipv6端口注释
[root@localhost html]# systemctl restart httpd.service  ##重启网络服务
[root@localhost html]# netstat -ntap   ##查看监听端口开启状态 
tcp        0      0 192.168.13.133:8080     0.0.0.0:*               LISTEN      4093/httpd          
tcp        0      0 192.168.13.133:80       0.0.0.0:*               LISTEN      4093/httpd   

4,测试网页

技术图片
技术图片

案例三——基于IP

在Linux上添加一块网卡做不同IP

1,配置扩展配置文件内容

[root@lolocalhost extra]# vim vhost.conf
             ##修改ip地址
         Documentroot "/var/www/html/accp/"     ##域名此处没有用处删除
         Errorlog "logs/www.accp.com.error_log"
         Customlog "logs/www.accp.com.access_log" common
         
             Require all granted
         
     

          ##修改ip地址
        Documentroot "/var/www/html/accp02/"  ##修改目录accp02和日志
        Errorlog "logs/www.accp02.com.error_log"
        Customlog "logs/www.accp02.com.access_log" common
        
            Require all granted
        
    

2,编辑网站目录和网站内容

[root@localhost extra]# cd /var/www/html/  
[root@localhost html]# mkdir accp02   ##创建132ip地址的目录站点内容
[root@localhost html]# cd accp02/
[root@localhost accp02]# echo "this is 132 web" > index.html
[root@localhost accp02]# cd ../
[root@localhost html]# cd accp     ##修改133ip地址网页内容
[root@localhost accp]# vim index.html
this is 133 web

3,配置http主配置文件,修改监听端口,并重启网络服务

[root@localhost html]# vim /etc/httpd/conf/httpd.conf     ##修改配置文件
Listen 192.168.13.133:80    ##添加两个ip的端口监听
Listen 192.168.13.132:80
#Listen 192.168.13.133:8080   ##注释8080端口的
#Listen 80                    ##将ipv6端口注释
[root@localhost conf]# systemctl restart httpd.service  ##重启网络服务

4,测试网页

技术图片
技术图片

扩展:不同ip不同域名访问

1,配置扩展配置文件内容

[root@lolocalhost extra]# vim vhost.conf
    
    Documentroot "/var/www/html/accp/"
    ServerName www.accp.com    ##添加域名
    Errorlog "logs/www.accp.com.error_log"
    Customlog "logs/www.accp.com.access_log" common
    
        Require all granted
    



    Documentroot "/var/www/html/accp02/"
    ServerName www.naccp.com    ##添加另一个域名
    Errorlog "logs/www.accp02.com.error_log"
    Customlog "logs/www.accp02.com.access_log" common
    
        Require all granted
    

2,在dns区域配置文件中添加新的域名解析

[root@localhost /]# vim /etc/named.rfc1912.zones 
zone "accp.com" IN {
    type master;
    file "accp.com.zone";
    allow-update { none; };
};

zone "naccp.com" IN {
                type master;
                file "naccp.com.zone";
                allow-update { none; };
};

3,配置区域数据配置文件

[root@localhost named]# cd /var/named/
[root@localhost named]# cp -p accp.com.zone naccp.com.zone ##复制
[root@localhost named]# vim naccp.com.zone ##配置区域数据配置文件
$TTL 1D
@       IN SOA  @ rname.invalid. (
                                                                                0       ; serial
                                                                                1D      ; refresh
                                                                                1H      ; retry
                                                                                1W      ; expire
                                                                                3H )    ; minimum
                NS      @
                A       127.0.0.1
www IN  A       192.168.13.132   ##此处的naccp要修改132ip地址

4,重启dns和http服务,并测试

[root@localhost named]# systemctl restart named  ##重启DNS
[root@localhost named]# systemctl restart httpd.service  ##重启网络

技术图片
技术图片

谢谢阅读!!!

构建虚拟主机——基于域名,端口,IP


推荐阅读
  • 虚拟机网络设置与数据库远程连接优化指南
    本文针对个人计算机上虚拟机网络配置与数据库远程连接的问题,提供了一套详细的优化指南。在探讨远程数据库访问前,需确保网络配置正确,特别是桥接模式的设置。通过合理的网络配置,可以有效解决因虚拟机或网络问题导致的连接失败,提升远程访问的稳定性和效率。 ... [详细]
  • C#中实现高效UDP数据传输技术
    C#中实现高效UDP数据传输技术 ... [详细]
  • 本文全面解析了 gRPC 的基础知识与高级应用,从 helloworld.proto 文件入手,详细阐述了如何定义服务接口。例如,`Greeter` 服务中的 `SayHello` 方法,该方法在客户端和服务器端的消息交互中起到了关键作用。通过实例代码,读者可以深入了解 gRPC 的工作原理及其在实际项目中的应用。 ... [详细]
  • 在Python网络编程中,多线程技术的应用与优化是提升系统性能的关键。线程作为操作系统调度的基本单位,其主要功能是在进程内共享内存空间和资源,实现并行处理任务。当一个进程启动时,操作系统会为其分配内存空间,加载必要的资源和数据,并调度CPU进行执行。每个进程都拥有独立的地址空间,而线程则在此基础上进一步细化了任务的并行处理能力。通过合理设计和优化多线程程序,可以显著提高网络应用的响应速度和处理效率。 ... [详细]
  • 如何在Mac上构建高效的本地服务器环境
    在Mac上构建高效的本地服务器环境,首先需要了解基本步骤:1. 配置目录基础;2. 启动Apache服务;3. 添加自定义文档至本地服务器;4. 查看自定义效果。此外,还可以通过手机或其他电脑访问本机服务器,以确保跨设备的兼容性和调试效果。Mac系统自带的Apache服务为本地开发提供了便捷的工具,本文将详细介绍每个步骤的具体操作方法。 ... [详细]
  • 如何使用R语言高效连接并操作MySQL数据库
    如何使用R语言高效连接并操作MySQL数据库 ... [详细]
  • 在基于.NET框架的分层架构实践中,为了实现各层之间的松散耦合,本文详细探讨了依赖注入(DI)和控制反转(IoC)容器的设计与实现。通过合理的依赖管理和对象创建,确保了各层之间的单向调用关系,从而提高了系统的可维护性和扩展性。此外,文章还介绍了几种常见的IoC容器实现方式及其应用场景,为开发者提供了实用的参考。 ... [详细]
  • Node.js 配置文件管理方法详解与最佳实践
    本文详细介绍了 Node.js 中配置文件管理的方法与最佳实践,涵盖常见的配置文件格式及其优缺点,并提供了多种实用技巧和示例代码,帮助开发者高效地管理和维护项目配置,具有较高的参考价值。 ... [详细]
  • 深入理解Linux网络编程:UDP协议实战解析
    深入理解Linux网络编程:UDP协议实战解析 ... [详细]
  • 本文源自极分享,详细内容请参阅原文。技术债务如同信用卡负债,随着时间推移,修复成本会越来越高,因此程序员必须对此有深刻认识。此外,团队应致力于培养一种持续维护和优化代码的文化,以减少技术债务的累积。 ... [详细]
  • 1. 设置用户密码:使用 `slappasswd` 工具生成加密密码,确保账户安全。具体步骤如下:输入命令 `slappasswd -s NewPassword`,系统将提示重新输入新密码,并生成加密后的哈希值 {SSHA}xxxxxxxxxxxxxxxxx。2. 编写配置文件:编辑 `vildapus` 配置文件,添加必要的用户账户信息,以确保新用户能够顺利登录系统。 ... [详细]
  • 【Linux】CentOS 7 远程连接指南:高效安全的远程管理方法
    在 CentOS 7 中实现高效且安全的远程管理,本文详细介绍了如何检查和安装配置 OpenSSH。首先,通过 `yum list installed` 命令检查系统是否已安装 OpenSSH,若未安装,则使用 `yum install openssh-server` 进行安装。随后,配置 SSH 服务以确保其安全性和稳定性,包括修改默认端口、禁用 root 登录等关键步骤。此外,还提供了常见问题的解决方案,帮助用户顺利进行远程连接。 ... [详细]
  • 在Kubernetes上部署多个Mitmproxy代理服务器以实现高效流量管理 ... [详细]
  • 深入解析Spring Boot启动过程中Netty异步架构的工作原理与应用
    深入解析Spring Boot启动过程中Netty异步架构的工作原理与应用 ... [详细]
  • 本文将详细介绍在Android应用中添加自定义返回按钮的方法,帮助开发者更好地理解和实现这一功能。通过具体的代码示例和步骤说明,本文旨在为初学者提供清晰的指导,确保他们在开发过程中能够顺利集成返回按钮,提升用户体验。 ... [详细]
author-avatar
雪_月_
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有