为什么需要用到虚拟主机:
首先它是一个主机,他有操作系统
我们还需要IP地址 可是对于那些小站点而讲,是及其浪费的。所以我们期望能够在一台主机上虚拟出多个主机,能够服务于多个不同的站点
###################################
apache :
中心主机:section2
虚拟主机:3
同一个IP 主机名不同
虚拟主机的定义:得先取消中心主机,即注释DocumentRoot
<VirtualHost Host>
</VirtualHost>
1、基于IP,Host的写法
HOST
IP1:80
IP2:80
2、基于端口:
HOST
IP:80
IP:8080
3、基于域名:
*:80
ServerName 不能相同
#####################################
具体实现方法:基于IP认证
1、取消中心主机 #DocumentRoot
2、cd /etc/httpd/conf.d;;vim virtual.conf
3、
<VirtualHost 192.168.9.247:80>
ServerName hello.magedu.com
DocumentRoot "/www/magedu.com"
</VirtualHost>
<VirtualHost 192.168.9.248:80>
ServerName www.a.org
DocumentRoot "/www/a.org"
</VirtualHost>
4、httpd -t检查语法是否有错误
5、mkdir -pv /www/{magedu.com,a.org}创建目录
6、cd magedu.com ;;vim index.html
7、编辑
<title>MageEdu</title>
<h1>magedu.com</h1>
8、ip addr add 192.168.9.248/16 dev eth0 为主机再加一个IP地址
9、ip addr show 显示出来
##################################
基于端口认证:
1、追加编辑conf.d下的配置文件;;;你会发现已经有了247这个IP 但是端口不同
<VirtualHost 192.168.9.247:8080>
ServerName www.b.net
DocumentRoot "/WWW/b.net"
</VirtualHost>
2、编辑主配置文件/etc/httpd/conf/httpd.conf
Listen 80
Listen 8080
3、编辑/www/b.net/index.html
4、重启即可
#################################################################
基于名称的虚拟主机
0、vim /etc/httpd/conf/httpd.conf
1、NameVirtualHost *:80 解除注释 意思是80端口上的所有IP
3、vim /etc/httpd/conf/virtual
4、在第一行加 NameVirtualHost 192.168.9.248:80
<VirtualHost 192.168.9.248:80>
ServerName www.a.org
DocumentRoot "/www/a.org"
</VirtualHost>
<VirtualHost 192.168.9.248:80>
ServerName www.b.gov
DocumentRoot "/www/b.gov"
</VirtualHost>
############################################333333333
还可以自定义指定日志存放位置及格式
<VirtualHost 192.168.9.248:80>
ServerName www.b.gov
DocumentRoot "/www/b.gov"
CustomLog/var/httpd/magedu.com/access_log combined
</VirtualHost>
只要有权限,重启后就会自动创建这个目录
#########################################################33
让a.org拒绝192.168.9.226这个地址访问
<VirtualHost 192.168.9.248:80>
ServerName www.a.org
DocumentRoot "/www/a.org"
<Directory "/www/d.gov">
Options none
AllowOverride none
Order deny,allow
Deny from 192.168.9.226
</Directory>
</VirtualHost>
保存 httpd -t 检查是否有语法错误 重启
#####################################################
让a.org需要输入用户名密码才能登陆
<VirtualHost 192.168.9.248:80>
ServerName www.a.org
DocumentRoot "/www/a.org"
CustomLog /var/log/httpd/a.org/access_log combined
<Directory "/www/a.org">
Options none
AllowOverride authconfig
AuthType basic
AuthName "Restrict area."
AuthUserFile "/etc/httpd/.htpasswd"
Required valid-user
</Directory>
</VirtualHost>
保存;;httpd -t 检查是否有语法错误
htpasswd -c -m /etc/httpd/.htpasswd tom添加tom用户
再添加用户就把-c去掉
htpasswd -m /etc/httpd/.htpasswd hadoop
########################################################
如果访问一个压根不存在的一个虚拟主机:
<VirtualHost 192.168.9.247:80>
ServerName _default_
DocumentRoot "/www/default"
</VirtualHost>
mkdir /www/default
vim /www/default/index.html
<h1>Default</h1>
重启 注意在编辑的时候 default 尽量放在上边
原文地址:http://10183596.blog.51cto.com/10173596/1699095