大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
httpd虚拟主机的作用:可以将多个站点绑定在同一个IP上,也可在同一主机上将多个网站绑定在多个IP上;
我们拥有10年网页设计和网站建设经验,从网站策划到网站制作,我们的网页设计师为您提供的解决方案。为企业提供网站建设、成都网站制作、微信开发、成都微信小程序、成都手机网站制作、H5场景定制、等业务。无论您有什么样的网站设计或者设计方案要求,我们都将富于创造性的提供专业设计服务并满足您的需求。
虚拟主机可以根据端口绑定,也可基于IP绑定,示例如下:
www.a.com --> 10.1.1.100:80 www.b.net --> 10.1.1.100:808 www.c.org --> 10.1.1.100:8080
或
www.a.com --> 10.1.1.100 www.b.net --> 10.1.1.101 www.c.org --> 10.1.1.102
以上两种也可以混合使用;亦可多个域名共用一个IP及端口,此种情况下需要DNS上将多个域名映射到同一个IP地址。
配置虚拟主机(以CentOS 7为例):
Apache httpd配置文件:
主配置文件:
/etc/httpd/conf/httpd.conf /etc/httpd/conf.d/*conf #也可作为主配置文件的一部分
1、安装服务:
yum -y install httpd
2、备份主配置文件并修改,以便后续开启虚拟主机:
vim /etc/httpd/conf/httpd.conf,注释掉默认的网页文件路径 # DocumentRoot "/var/www"---> httpd网页文件默认路径
3、找到#ServerName www.example.com:80,添加一下内容:
ServerName localhost:80 #添加之后httpd服务启动时将不会尝试使用DNS服务器解析本机hostname
4、在/etc/httpd/conf.d/新建虚拟主机配置文件,方便后续管理,不用的时候删除即可
vim /etc/httpd/conf.d/vhosts.conf
4.1 如果使用基于端口的方式,则
Listen 808 #监听需要启用的端口ServerName www.a.com DocumentRoot "/www/a.com/htdocs/" #目录提前创建好,并将index.html测试文件放入对应的目录 ServerName www.b.net DocumentRoot "/www/b.net/htdocs/"
4.2 如果使用基于IP的方式,则
ServerName www.a.com DocumentRoot "/www/a.com/htdocs/" #目录提前创建好,并将index.html测试文件放入对应的目录 ServerName www.b.net DocumentRoot "/www/b.net/htdocs/"
4.3 如果使用FQDN的方式,则(此种方法主要靠DNS服务器将多个域名和IP做绑定)
ServerName www.a.com DocumentRoot "/www/a.com/htdocs/" ServerName www.a.com DocumentRoot "/www/a.com/htdocs/"
注:在修改httpd的配置文件后,请使用httpd -t检查配置文件,没问题再重启服务
可能出现的问题,及解决办法
1、经过上述配置,虚拟主机可能存在不能访问的问题,请关闭SELinux及iptables;
SElinux 关闭方法: setenforce 0 #临时关闭 vim /etc/selinux/config #需要重启 SELINUX=disabled SELinux查看方法: getenforce disable #处于关闭装填 CentOS 7防火墙关闭方法: systemctl disable firewalld.service
2、如果此时仍不能访问,提示路径不能访问的forbidden错误,在虚拟主机配置文件中加入以下内容:
#可参考主配置文件中针对默认路径权限的配置案例,此处的路径为虚拟主机网页文件路径 AllowOverride None # Allow open access: Require all granted
注:网页文件默认不允许访问
添加之后,httpd -t检查下语法错误,没问题的话重启服务即可,此时虚拟主机应能正常访问;
server-status及身份认证
1、如果需要通过某虚拟主机获取服务器状态,并需要认证身份,则添加以下内容:
ServerName www.a.com DocumentRoot "/www/a.com/htdocs/" SetHandler server-status AuthType Basic AuthName "ENTER YOUR ID" AuthUserFile /etc/httpd/conf/.htpasswd #指明认证所需的文件路径 Require valid-user #只要用户存在即可,亦可直接指定用户名
2、使用htpasswd -c -m /etc/httpd/conf/.htpasswd USERNAME 创建用户名及设定密码
注:-c命令只在第一次创建用户时使用,用户生成密码文件