2020-11-08

Linux第十四天

apache的虚拟主机功能

  1. 基于不同的IP地址
    配置网络方法,增加3个ip地址而且可以正常访问。
    在这里插入图片描述
    在存放数据的目录里面创建3个子目录并写入3个不同页面内容。然后配置httpd的主配置文件,
    在这里插入图片描述
    selinux安全上下文,修改存放数据的目录和子目录以及子目录下面的所有文件的上下文即可。
    然后输入不同ip地址即可访问不同网页。

  2. 基于主机域名
    当服务器无法为每个网站都分配一个独立IP地址的时候,可以尝试让Apache自动识别用户请求的域名,从而根据不同的域名请求来传输不同的内容。在这种情况下的配置更加简单,
    只需要保证位于生产环境中的服务器上有一个可用的IP地址,这里以192.168.10.10为例就可以了。由于当前还没有介绍如何配置DNS解析服务,因此需要手工定义IP地址与域名之间的对应关系。/etc/hosts是Linux系统中用于强制把某个主机域名解析到指定IP地址的配置文件。简单来说,只要这个文件配置正确,即使网卡参数中没有DNS信息也依然能够将域名解析为某个IP地址。
    第1步:手工定义IP地址与域名之间对应关系的配置文件,保存并退出后会立即生效。可以通过分别ping这些域名来验证域名是否已经成功解析为IP地址。
    [root@linuxprobe~]#vim/etc/hosts
    127.0.0.1localhostlocalhost.localdomainlocalhost4localhost4.localdomain4
    ::1localhostlocalhost.localdomainlocalhost6localhost6.localdomain6
    192.168.10.10www.linuxprobe.combbs.linuxprobe.comtech.linuxprobe.com
    [root@linuxprobe~]#ping-c4www.linuxprobe.com
    PINGwww.linuxprobe.com(192.168.10.10)56(84)bytesofdata.
    64bytesfromwww.linuxprobe.com(192.168.10.10):icmp_seq=1ttl=64time=0.070ms
    64bytesfromwww.linuxprobe.com(192.168.10.10):icmp_seq=2ttl=64time=0.077ms
    64bytesfromwww.linuxprobe.com(192.168.10.10):icmp_seq=3ttl=64time=0.061ms
    64bytesfromwww.linuxprobe.com(192.168.10.10):icmp_seq=4ttl=64time=0.069ms
    —www.linuxprobe.compingstatistics—
    4packetstransmitted,4received,0%packetloss,time2999ms
    rttmin/avg/max/mdev=0.061/0.069/0.077/0.008ms
    [root@linuxprobe~]#
    第2步:分别在/home/wwwroot中创建用于保存不同网站数据的三个目录,并向其中分
    别写入网站的首页文件。每个首页文件中应有明确区分不同网站内容的信息,方便我们稍后
    能更直观地检查效果。
    [root@linuxprobe~]#mkdir-p/home/wwwroot/www
    [root@linuxprobe~]#mkdir-p/home/wwwroot/bbs
    [root@linuxprobe~]#mkdir-p/home/wwwroot/tech
    [root@linuxprobe~]#echo"WWW.linuxprobe.com">/home/wwwroot/www/index.html
    [root@linuxprobe~]#echo"BBS.linuxprobe.com">/home/wwwroot/bbs/index.html
    [root@linuxprobe~]#echo"TECH.linuxprobe.com">/home/wwwroot/tech/index.html
    第3步:
    在httpd服务的配置文件中大约113行处开始,
    分别追加写入三个基于主机名的
    虚拟主机网站参数,然后保存并退出。记得需要重启httpd服务,这些配置才生效。
    [root@linuxprobe~]#vim/etc/httpd/conf/httpd.conf
    ………………省略部分输出信息………………
    113<VirtualHost192.168.10.10>
    114DocumentRoot"/home/wwwroot/www"
    115ServerName"www.linuxprobe.com"
    116<Directory"/home/wwwroot/www">
    117AllowOverrideNone
    118Requireallgranted
    119
    120
    121<VirtualHost192.168.10.10>
    122DocumentRoot"/home/wwwroot/bbs"
    123ServerName"bbs.linuxprobe.com"
    124<Directory"/home/wwwroot/bbs">
    125AllowOverrideNone
    126Requireallgranted
    127
    128
    129<VirtualHost192.168.10.10>
    130DocumentRoot"/home/wwwroot/tech"
    131ServerName"tech.linuxprobe.com"
    132<Directory"/home/wwwroot/tech">
    133AllowOverrideNone
    134Requireallgranted
    135
    136
    ………………省略部分输出信息………………
    第4步:因为当前的网站数据目录还是在/home/wwwroot目录中,因此还是必须要正确
    设置网站数据目录文件的SELinux安全上下文,使其与网站服务功能相吻合。最后记得用
    restorecon命令让新配置的SELinux安全上下文立即生效,
    这样就可以立即访问到虚拟主机网
    站了,效果如图10-16所示。
    [root@linuxprobe~]#semanagefcontext-a-thttpd_sys_content_t/home/wwwroot
    [root@linuxprobe~]#semanagefcontext-a-thttpd_sys_content_t/home/wwwroot/www
    [root@linuxprobe~]#semanagefcontext-a-thttpd_sys_content_t/home/wwwroot/www/*
    [root@linuxprobe~]#semanagefcontext-a-thttpd_sys_content_t/home/wwwroot/bbs
    [root@linuxprobe~]#semanagefcontext-a-thttpd_sys_content_t/home/wwwroot/bbs/*
    [root@linuxprobe~]#semanagefcontext-a-thttpd_sys_content_t/home/wwwroot/tech
    [root@linuxprobe~]#semanagefcontext-a-thttpd_sys_content_t/home/wwwroot/tech/*
    [root@linuxprobe~]#restorecon-Rv/home/wwwroot
    reset/home/wwwrootcontextunconfined_u:object_r:home_root_t:s0->unconfined_u:
    object_r:httpd_sys_content_t:s0
    restoreconreset/home/wwwroot/wwwcontextunconfined_u:object_r:home_root_t:
    s0->unconfined_u:object_r:httpd_sys_content_t:s0
    restoreconreset/home/wwwroot/www/index.htmlcontextunconfined_u:object_r:
    home_root_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0
    restoreconreset/home/wwwroot/bbscontextunconfined_u:object_r:home_root_t:
    s0->unconfined_u:object_r:httpd_sys_content_t:s0
    restoreconreset/home/wwwroot/bbs/index.htmlcontextunconfined_u:object_r:
    home_root_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0
    restoreconreset/home/wwwroot/techcontextunconfined_u:object_r:home_root_t:
    s0->unconfined_u:object_r:httpd_sys_content_t:s0
    restoreconreset/home/wwwroot/tech/index.htmlcontextunconfined_u:object_r:
    home_root_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0
    [root@linuxprobe~]#firefox

  3. 基于端口号
    基于端口号的虚拟主机功能可以让用户通过指定的端口号来访问服务器上的网站资源。在使用Apache配置虚拟网站主机功能时,基于端口号的配置方式是最复杂的。因此我们不仅
    要考虑httpd服务程序的配置因素,还需要考虑到SELinux服务对新开设端口的监控。一般来
    说,使用80、443、8080等端口号来提供网站访问服务是比较合理的,如果使用其他端口号
    则会受到SELinux服务的限制。在接下来的实验中,我们不但要考虑到目录上应用SELinux安全上下文的限制,还需要考虑SELinux域对httpd服务程序的管控。
    第1步:分别在/home/wwwroot中创建用于保存不同网站数据的两个目录,并向其中分
    别写入网站的首页文件。每个首页文件中应有明确区分不同网站内容的信息,方便我们稍后
    能更直观地检查效果。
    [root@linuxprobe~]#mkdir-p/home/wwwroot/6111
    [root@linuxprobe~]#mkdir-p/home/wwwroot/6222
    [root@linuxprobe~]#echo"port:6111">/home/wwwroot/6111/index.html
    [root@linuxprobe~]#echo"port:6222">/home/wwwroot/6222/index.html
    第2步:在httpd服务配置文件的第43行和第44行分别添加用于监听6111和6222端口的参数。
    [root@linuxprobe~]#vim/etc/httpd/conf/httpd.conf
    ………………省略部分输出信息………………
    33#
    34#Listen:AllowsyoutobindApachetospecificIPaddressesand/or
    35#ports,insteadofthedefault.Seealsothe
    36#directive.
    37#
    38#ChangethistoListenonspecificIPaddressesasshownbelowto
    39#preventApachefromglommingontoallboundIPaddresses.
    40#
    41#Listen12.34.56.78:80

42Listen80
43Listen6111
44Listen6222
………………省略部分输出信息………………
第3步:
在httpd服务的配置文件中大约113行处开始,
分别追加写入两个基于端口号的
虚拟主机网站参数,然后保存并退出。记得需要重启httpd服务,这些配置才生效。
[root@linuxprobe~]#vim/etc/httpd/conf/httpd.conf
………………省略部分输出信息………………
113VirtualHost192.168.10.10:6111
114DocumentRoot"/home/wwwroot/6111"
115ServerNamewww.linuxprobe.com
116<Directory"/home/wwwroot/6111">
117AllowOverrideNone
118Requireallgranted
119
120
121VirtualHost192.168.10.10:6222
122DocumentRoot"/home/wwwroot/6222"
123ServerNamebbs.linuxprobe.com
124<Directory"/home/wwwroot/6222">
125AllowOverrideNone
126Requireallgranted
127
128
………………省略部分输出信息………………
第4步:因为我们把网站数据目录存放在/home/wwwroot目录中,因此还是必须要正确
设置网站数据目录文件的SELinux安全上下文,使其与网站服务功能相吻合。最后记得用
restorecon命令让新配置的SELinux安全上下文立即生效。
[root@linuxprobe~]#semanagefcontext-a-thttpd_sys_content_t/home/wwwroot
[root@linuxprobe~]#semanagefcontext-a-thttpd_sys_content_t/home/wwwroot/6111
[root@linuxprobe~]#semanagefcontext-a-thttpd_sys_content_t/home/wwwroot/6111/*
[root@linuxprobe~]#semanagefcontext-a-thttpd_sys_content_t/home/wwwroot/6222
[root@linuxprobe~]#semanagefcontext-a-thttpd_sys_content_t/home/wwwroot/6222/*
[root@linuxprobe~]#restorecon-Rv/home/wwwroot/
restoreconreset/home/wwwrootcontextunconfined_u:object_r:home_root_t:s0->
unconfined_u:object_r:httpd_sys_content_t:s0
restoreconreset/home/wwwroot/6111contextunconfined_u:object_r:home_root_t:
s0->unconfined_u:object_r:httpd_sys_content_t:s0
restoreconreset/home/wwwroot/6111/index.htmlcontextunconfined_u:object_r:
home_root_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0
restoreconreset/home/wwwroot/6222contextunconfined_u:object_r:home_root_t:
s0->unconfined_u:object_r:httpd_sys_content_t:s0
restoreconreset/home/wwwroot/6222/index.htmlcontextunconfined_u:object_r:
home_root_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0
[root@linuxprobe~]#systemctlrestarthttpd
Jobforhttpd.servicefailed.See’systemctlstatushttpd.service’and’journalctl-
xn’fordetails.
见鬼了!在妥当配置httpd服务程序和SELinux安全上下文并重启httpd服务后,竟然出
现报错信息。
这是因为SELinux服务检测到6111和6222端口原本不属于Apache服务应该需要的资源,但现在却以httpd服务程序的名义监听使用了,所以SELinux会拒绝使用Apache服务使用这两个端口。我们可以使用semanage命令查询并过滤出所有与HTTP协议相关且
SELinux服务允许的端口列表。
[root@linuxprobe~]#semanageport-l|grephttp
http_cache_port_ttcp8080,8118,8123,10001-10010
http_cache_port_tudp3130
http_port_ttcp80,81,443,488,8008,8009,8443,9000
pegasus_http_port_ttcp5988
pegasus_https_port_ttcp5989
第5步:SELinux允许的与HTTP协议相关的端口号中默认没有包含6111和6222,因此需
要将这两个端口号手动添加进去。该操作会立即生效,而且在系统重启过后依然有效。设
置好后再重启httpd服务程序,然后就可以看到网页内容了。
[root@linuxprobe~]#semanageport-a-thttp_port_t-ptcp6111
[root@linuxprobe~]#semanageport-a-thttp_port_t-ptcp6222
[root@linuxprobe~]#semanageport-l|grephttp
http_cache_port_ttcp8080,8118,8123,10001-10010
http_cache_port_tudp3130
http_port_ttcp6222,6111,80,81,443,488,8008,8009,8443,9000
pegasus_http_port_ttcp5988
pegasus_https_port_ttcp5989
[root@linuxprobe~]#systemctlrestarthttpd
[root@linuxprobe~]#firefox
apache的访问控制服务,实现限制访问数据的浏览器或者某台主机,但是squid的服务的访问控制类型更多。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值