您的位置:首页 > 运维架构 > Apache

apache 虚拟主机

2015-09-29 13:15 489 查看
为什么需要用到虚拟主机:
首先它是一个主机,他有操作系统
我们还需要IP地址 可是对于那些小站点而讲,是及其浪费的。所以我们期望能够在一台主机上虚拟出多个主机,能够服务于多个不同的站点

###################################
apache :
中心主机:section2
虚拟主机:3

同一个IP 主机名不同

www.magedu.com
www.a.org
虚拟主机的定义:得先取消中心主机,即注释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 尽量放在上边
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息