众所周知,一台物理服务器只能运行一个站点,但如若想实现一台服务器运行多个站点时,就不得不用到虚拟主机了。虚拟主机,顾名思义,就是一个虚拟出来的主机,当在服务单配置完成后,客户端访问时就像是访问了多个后端服务器。
成都创新互联公司服务项目包括广灵网站建设、广灵网站制作、广灵网页制作以及广灵网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,广灵网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到广灵省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!实现虚拟主机有三种不同的方式:
基于IP的虚拟主机:使用不同的IP地址提供不同的站点
基于PORT的虚拟主机:使用不同的端口提供不同的站点
基于HOSTNAME的虚拟主机:使用不同的主机名提供不同站点
为了更直观的感受,下面一一实现基于三种方式的虚拟主机:
说明一下实验环境,实验主机为centos7.3,IP地址为:192.168.1.104
首先安装httpd服务,这里使用的是httpd2.4.6版本:
# yum -y install httpd
安装完成后查看安装文件:
# rpm -ql httpd
对应的文件做一些简单说明:
服务脚本:/etc/rc.d/init.d/httpd 脚本配置文件:/etc/sysconfig/httpd 运行目录:/etc/httpd 配置文件: 主配置文件:/etc/httpd/conf/httpd.conf 扩展配置:/etc/httpd/conf.d/*.conf 监听的Socket:80/tcp,443/tcp 文档根目录:/var/www/html CGI:/var/www/cgi-bin/ 默认主页:index.html
在实验之前,须确保在httpd.conf配置文件中:
httpd服务监听的端口为80
注释掉DocumentRoot "/var/www/html/"
一、基于IP的虚拟主机实现:
本机的IP地址为192.168.1.104,需在添加一个IP地址:
# ifconfig ens36:0 192.168.1.200 netmask 255.255.255.0 broadcast 192.168.1.255 up
用ifconfig查看:
可看到ens36:0已添加成功。
为了便于管理,我们在扩展配置文件中新建VirtualHost.conf文件:
]# vim VirtualHost.conf
添加内容如下:
DocumentRoot "/var/www/test1/" ServerName 192.168.1.104 DocumentRoot "/var/www/test2/" ServerName 192.168.1.200
而后为添加的两个站点添加主页
首先创建两个目录:
# mkdir -pv /var/www/test{1,2} mkdir: created directory ‘/var/www/test1’ mkdir: created directory ‘/var/www/test2’
为test1提供主页文件:
# vim /var/www/test1/index.html
添加内容如下:
Test1 Page
保存退出。站点test2同理;
执行语法检查:
# httpd -t Syntax OK
重读配置文件:
# systemctl reload httpd
测试结果:
站点test1:
站点test2:
二、基于端口的虚拟主机实现:
编辑扩展配置文件:
]# vim VirtualHost.conf
添加内容如下:
DocumentRoot "/var/www/test1/" ServerName 192.168.1.104 DocumentRoot "/var/www/test2/" ServerName 192.168.1.200
在主配置文件中,监听端口下面添加一行
Listen 8080
保存退出
执行语法检查:
# httpd -t Syntax OK
注:此处由于添加了端口,需要重启服务方能生效
# systemctl restart httpd # 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 :::* //8080端口已监听 LISTEN 0 128 :::80 :::* //80端口已监听 LISTEN 0 128 :::22 :::* LISTEN 0 100 ::1:25 :::*
测试结果:
站点1:
站点2:
三、由于基于IP和端口的虚拟主机不常用,故而此处演示基于FQDN的虚拟主机实现:
在扩展配置文件中添加如下内容:
为了使主机名解析成功,需要修改host文件,我们此处使用win下浏览器测试,故而需要修改win下hosts文件,路径为:
C:\Windows\System32\drivers\etc\hosts
添加如下内容
开始测试:
站点test1:
站点test2:
以上,即使基于httpd的虚拟主机三种实现方式,但在日常生产中,常需要对特定用户实现访问控制,下面简单演示基于用户的控制访问:
编辑扩展配置文件,并添加如下内容:
接下来用htpasswd生成密码:
创建对应的admin目录及主页文件
# mkdir /var/www/test1/admin //创建目录 # vim /var/www/test1/admin/index.html //创建主业文件Authentication
//添加的内容
如图:
而后访问:
输入用户名密码:
至此httpd的虚拟主机和用户认证就实现了。
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。