--------------------------------
一、前言
二、环境
三、特点介绍
1.物理目录
2.基于别名的虚拟目录
3.基于ip的虚拟主机
4.基于端口的虚拟主机
5.基于主机头的虚拟主机
四、配置
五、普通用户个人主页配置(附加)
--------------------------------
一、前言
访问web服务,本质上看(从协议上)是访问某个IP的主机上的某个端口(默认是80)通常需要通过访问不同的域名或者端口实现对不同网站的访问(具体到服务器里就是不同目录),这个时候就需要设置虚拟主机(VirtualHost).通常分为这样4种:基于域名,基于端口,基于IP,以及它们的混合。
二、环境
系统:redhat6.5 32位
IP:192.168.2.200/24
三、特点介绍:
1.物理目录
必须放在申请站点的主目录下 /var/www/html
2.基于别名的虚拟目录
放置任意位置(访问使用别名)
3.基于ip的虚拟主机
特点:多个ip 多个fqdn 端口都是80
4.基于端口的虚拟主机(selinux)
特点:少量ip 少量名称 多个端口 多个站点
5.基于主机头的虚拟主机(最流行的)
特点:少量ip 多个名称 端口都是80 多个站点
四、配置(关闭防火墙及SELinux)
1.物理目录
# service iptables stop # setenforce 0 # cd /var/www/html/ # mkdir baidu # echo Welcome to baidu! >baidu/index.html # mkdir tencent # echo Welcome to tencent! >tencent/index.html # service httpd start
2.基于别名的虚拟目录
# vim /etc/httpd/conf/httpd.conf 552 Alias /virtual "/tmp/abc" # mkdir /tmp/abc # echo 'This is a virtual page.' >/tmp/abc/index.html # service httpd restart
3.基于ip的虚拟主机
案例:三个IP分别对应三个域名及三个目录
192.168.2.200 www.abc.com /var/www/abc
192.168.2.201 tec.abc.com /var/www/tec
192.168.2.202 mkt.abc.com /var/www/mkt
# ifconfig eth0:0 192.168.2.201 //设置临时IP # ifconfig eth0:1 192.168.2.202 //本小节实验做完后记得把临时IP去掉,重启网卡即可去掉。 # cd /var/www/ # mkdir abc tec mkt # echo 'Welcome to www.abc.com'>abc/index.html # echo 'Welcome to tec.abc.com'>tec/index.html # echo 'Welcome to mkt.abc.com'>mkt/index.html # vim /etc/httpd/conf/httpd.conf 10101011 ServerAdmin [email protected] 1012 DocumentRoot /var/www/abc 1013 ServerName www.abc.com 1014 ErrorLog logs/error_log 1015 CustomLog logs/access_log combined 1016 10171018 ServerAdmin [email protected] 1019 DocumentRoot /var/www/tec 1020 ServerName tec.abc.com 1021 ErrorLog logs/tec_error_log 1022 CustomLog logs/tec_access_log combined 1023 10241025 ServerAdmin [email protected] 1026 DocumentRoot /var/www/mkt 1027 ServerName mkt.abc.com 1028 ErrorLog logs/mkt_error_log 1029 CustomLog logs/mkt_access_log combined 1030 # service httpd configtest //语法检查 Syntax OK # service httpd restart Stopping httpd: [ OK ] Starting httpd: [ OK ]
写入客户端的hosts文件(只是测试,不再搭建DNS服务器)
192.168.2.200 www.abc.com
192.168.2.201 tec.abc.com
192.168.2.202 mkt.abc.com
测试:
http://www.abc.com
http://tec.abc.com
http://mkt.abc.com
4.基于端口的虚拟主机
案例:一个IP对应同一个域名,但是多个端口,不同目录
192.168.2.200 www.abc.com 80 /var/www/abc
192.168.2.200 www.abc.com 800 /var/www/tec
192.168.2.200 www.abc.com 8000 /var/www/mkt
# vim /etc/httpd/conf/httpd.conf 136 Listen 80 137 Listen 800 138 Listen 8000 10121013 ServerAdmin [email protected] 1014 DocumentRoot /var/www/abc 1015 ServerName www.abc.com 1016 ErrorLog logs/error_log 1017 CustomLog logs/access_log combined 1018 10191020 ServerAdmin [email protected] 1021 DocumentRoot /var/www/tec 1022 ServerName www.abc.com 1023 ErrorLog logs/tec_error_log 1024 CustomLog logs/tec_access_log combined 1025 10261027 ServerAdmin [email protected] 1028 DocumentRoot /var/www/mkt 1029 ServerName www.abc.com 1030 ErrorLog logs/mkt_error_log 1031 CustomLog logs/mkt_access_log combined 1032 # service httpd configtest Syntax OK # service httpd restart Stopping httpd: [ OK ] Starting httpd: [ OK ] # netstat -tupln |grep httpd tcp 0 0 :::8000 :::* LISTEN 26685/httpd tcp 0 0 :::800 :::* LISTEN 26685/httpd tcp 0 0 :::80 :::* LISTEN 26685/httpd
写入客户端的hosts文件 (只保留这一个)
192.168.2.200 www.abc.com
测试:
http://www.abc.com
http://www.abc.com:800
http://www.abc.com:8000
5.基于主机头的虚拟主机(最流行的)
案例:相同IP,不同域名,相同端口80,不同目录。
192.168.2.200 www.abc.com /var/www/abc
192.168.2.200 tec.abc.com /var/www/tec
192.168.2.200 mkt.abc.com /var/www/mkt
# vim /etc/httpd/conf/httpd.conf 990 NameVirtualHost 192.168.2.200:80 10101011 ServerAdmin [email protected] 1012 DocumentRoot /var/www/abc 1013 ServerName www.abc.com 1014 ErrorLog logs/error_log 1015 CustomLog logs/access_log combined 1016 10171018 ServerAdmin [email protected] 1019 DocumentRoot /var/www/tec 1020 ServerName tec.abc.com 1021 ErrorLog logs/tec_error_log 1022 CustomLog logs/tec_access_log combined 1023 10241025 ServerAdmin [email protected] 1026 DocumentRoot /var/www/mkt 1027 ServerName mkt.abc.com 1028 ErrorLog logs/mkt_error_log 1029 CustomLog logs/mkt_access_log combined 1030 # service httpd configtest Syntax OK # service httpd restart Stopping httpd: [ OK ] Starting httpd: [ OK ]
写入客户端的hosts文件
192.168.2.200 www.abc.com
192.168.2.200 tec.abc.com
192.168.2.200 mkt.abc.com
测试:
五、普通用户个人主页配置(开启防火墙及SELiunx)
# setup //打开防火墙
允许http出入
# vim /etc/httpd/conf/httpd.conf //修改配置文档 366 #UserDir disabled 373 UserDir public_html # service httpd start # useradd nuo //添加普通用户 # passwd nuo # su - nuo $ pwd /home/nuo $ mkdir public_html $ cd public_html/ $ echo hello >index.html $ cat index.html hello $ ll -rw-rw-r--. 1 nuo nuo 6 May 14 18:31 index.html $ cd .. $ chmod 755 public_html/ //修改权限(最小权限) $ ll drwxr-xr-x. 2 nuo nuo 4096 May 14 18:31 public_html $ cd .. $ chmod 711 nuo/ //修改权限(最小权限) $ ll drwx--x--x. 27 nuo nuo 4096 May 14 18:31 nuo
更改SELinux规则,最小规则。
# su //切换到管理员 # getenforce //查看SELinux状态 Enforcing # getsebool -a |grep httpd httpd_can_network_connect --> off httpd_enable_homedirs --> off # setsebool -P httpd_can_network_connect=1 //开启 # setsebool -P httpd_enable_homedirs=1 //开启 # getsebool -a |grep httpd httpd_can_network_connect --> on httpd_enable_homedirs --> on # su - nuo $ restorecon -Rv /home/nuo/
测试:
http://192.168.2.200/~nuo/
# vim /etc/httpd/conf/httpd.conf 552 Alias /nuo "/home/nuo/public_html" //别名访问 # service httpd restart
http://192.168.2.200/nuo
ps:如果由于权限及相应规则问题,会无法访问,请小心设置!