您的位置:首页 > 理论基础 > 计算机网络

阿岳之_httpd2.2网页认证和虚拟主机配置篇(一)

2016-01-11 20:36 543 查看
Backgroud:

centos6.7

执行操作:yum install -y httpd

Working mode

httpd的三种工作模式:

prefork

worker

event

Configuration

配置文件:/etc/httpd/confi/httpd.conf,/etc/httpd/conf.d/*.conf

说明: 其中centos7.1默认的yum安装的httpd是2.4版本的,yum安装的httpd2.4的模块路径是/etc/httpd/modules_conf,然而模块却依然放在/usr/lib64/httpd/mod_*,不同的是,centos7(httpd2.4.6)里面有100个模块,而centos6(httpd2.2.15)里面有65个,由此可见,httpd2.4较httpd2.2扩展或者集成了更多的功能

Authentication

账号认证有两种:基于http协议认证和基于表单认证

基于http协议认证又有两种方式:Basic和digest,此处介绍基于Basic认证方式

安全域、存放账户和密码的文件、存放组的文件

安全域:即为认证作用的范围

存放账户和密码的文件:不要放在安全域的范围内,因为这是不可行的

存放组的文件:

实现

第一步,以账户进行认证:

mkdir /var/www/html/admin

vi /etc/httpd/conf/httpd.conf

#添加一段

<Directory "/var/www/html/admin">

Options None

AllowOverride None

AuthType Basic

AuthName "Sorry ,this is a private page.Please use your accunt"

AuthUserFile "/tmp/.htpasswd" //最好为隐藏文件

Require
user yuelin

# Require valid-user //此处意义为允许所有用户访问,不过这里表示仅允许yuelin这个账户访问

</Directory>

#添加存放账户和密码的文件

htpasswd -c -m /tmp/.htpasswd yuelin //若/tmp下面没有.htpasswd 则需要 -c 创建,但是第二次添加账户千万别-c,因为如果存在这个文件,会默认清空覆盖原有文件

htpasswd -m /tmp/.htpasswd mama

完事后这样:

~ ]# cat /tmp/.htpasswd

yuelin:$apr1$53EoMn8y$aLJ7A0uA3MtVvzOOtiCcn.

Even:$apr1$YRj84iRO$WFbaCIoqDmyfy9098h4np.

Mike:$apr1$2zg5g5Vz$MRLDM7PGzz7.tl6zn.ztL/

mama:$apr1$SsLuWLLK$Os2r76UUbiQXKrzB7v36F.

boom:$apr1$HWkSHHoN$JM2ityCRIDe2LWIfGWLGL/

#接着记得语法检查

httpd -t

#重载服务

service httpd reload

# 输入http://x.x.x.x/admin进行访问

第二步,以组进行认证:

vi /etc/httpd/conf/httpd.conf

#添加一段

<Directory "/var/www/html/admin">

Options None

AllowOverride None

AuthType Basic

AuthName "Sorry ,this is a private page.Please use your accunt"

AuthUserFile "/tmp/.htpasswd"

AuthGroupFile "/tmp/.htgroup"

Require group group1

</Directory>

#组配置文件如下

vi /tmp/.htgroup

#组配置文件内容

~] # cat /tmp/.htgroup

group1:bird mama boom

#也是检查语法,重载服务,用浏览器登录认证,ok啦!

VirtualHosts

虚拟机主机三个主要配置方法:基于ip,基于端口,基于FQDN(域名)

第一步:注释掉服务器main主机的根目录:

#DocumentRoot /var/www/html

第二步:创建虚拟主机对应的根目录文件

mkdir -pv /var/www/{x.com,y.net,z.org}/htdocs

方法一:基于ip创建

ifconfig eth0:0 172.16.52.70

ifconfig eth0:1 172.16.52.71

ifconfig eth0:2 172.16.52.72

vi /etc/httpd/conf.d/virtualhost1.conf,并键入内容:

<VirtualHost 172.16.52.70:80>

ServerName www.x.com

DocumentRoot "/var/www/x.com/htdocs"

</VirtualHost>

<VirtualHost 172.16.52.71:80>

ServerName www.y.net

DocumentRoot "/var/www/y.net/htdocs"

</VirtualHost>

<VirtualHost 172.16.52.72:80>

ServerName www.z.org

DocumentRoot "/var/www/z.org/htdocs"

</VirtualHost>

方法二:基于端口创建

vi /etc/httpd/conf.d/virtualhost2.conf,并键入内容:

Listen 808

<VirtualHost 172.16.52.68:80>

ServerName www.x.com

DocumentRoot "/var/www/x.com/htdocs"

</VirtualHost>

<VirtualHost 172.16.52.68:808>

ServerName www.y.net

DocumentRoot "/var/www/y.net/htdocs"

</VirtualHost>

方法三:基于FQDN创建:

vi /etc/httpd/conf.d/virtualhost3.conf,并键入内容:

NameVirtualHost 172.16.52.68:80 //httpd2.2是需要添加这个命令的,httpd2.4是不需要的

<VirtualHost 172.16.52.68:80>

ServerName www.x.com

DocumentRoot "/var/www/x.com/htdocs"

</VirtualHost>

<VirtualHost 172.16.52.68:80>

ServerName www.y.net

DocumentRoot "/var/www/y.net/htdocs"

</VirtualHost>

注意:基于FQDN的解析需要在客户端上的hosts文件里添加主机解析,eg;

windows下:C:\Windows\System32\drivers\etc\hosts

127.0.0.1 mpa.one.microsoft.com

127.0.0.1 sls.microsoft.com

172.16.52.68 www.x.com

172.16.52.68 www.y.net

linux下: vi /etc/hosts

172.16.52.68 www.x.com x.com

172.16.52.68 www.y.net y.net //后面y.net是命名别名,起始同一个ip地址后面的域名可以写在同一行,例如 172.168.52.68 www.x.com www.y.net
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: