Apache用户认证控制和虚拟主机配置

用户认证控制

认证质询: WWW-Authenticate:响应码为401,拒绝客户端请求,并说明要求客户端提供账号和密码
认证: Authorization:客户端用户填入账号和密码后再次发送请求报文;认证通过时,则服务器发送响应的资源
认证方式两种:
basic:明文
digest:消息摘要认证,兼容性差
安全域:需要用户认证后方能访问的路径;应该通过名称对其进行标识,以便于告知用户认证的原因
用户的账号和密码
虚拟账号:仅用于访问某服务时用到的认证标识
存储:文本文件, SQL数据库, ldap目录存储, nis等

基于用户名

示例:

var/www/html/secret>
AllowOverride None
AuthType Basic
AuthName "test Auth"
AuthUserFile /etc/httpd/conf.d/.httpuser #用户名密码文件
Require user username1 username2...

允许账号文件中的所有用户登录访问:
Require valid-user

账号密码文本生成方法

使用专用命令完成此类文件的创建及用户管理
htpasswd [options] /PATH/HTTPD_PASSWD_FILE username
-c:自动创建文件,仅应该在文件不存在时使用
-m: md5格式加密,不写加密方式默认为md5加密
-s : sha格式加密
-D:删除指定用户
[root@centos6 ~]# htpasswd -cs /etc/httpd/conf.d/.htpasswd hehe #第一次生成密码文件用-c
[root@centos6 ~]# cat /etc/httpd/conf.d/.htpasswd 
hehe:{SHA}fEqNCco3Yq9h5ZUglD3CZJT4lBs=
htpasswd -m /etc/httpd/conf.d/.htpasswd haha #用md5加密添加haha用户名密码到.htpasswd文件

基于组用户

示例:

<Directory "/var/www/html/secret">
AllowOverride None
AuthType Basic
AuthName "Administator private"
AuthUserFile "/etc/httpd/conf.d/.htpasswd"
AuthGroupFile "/etc/httpd/conf.d/.htgroup"
Require group webadmins
Directory>

vim /etc/httpd/conf.d/.htgroup
webadmins:hehe haha

远程主机和用户访问

Satisfy ALL|Any
ALL 客户机IP和用户验证都需要通过才可以
Any客户机IP和用户验证,有一个满足即可

示例:

<Directory /var/www/html/secret>
AllowOverride None
AuthType Basic
AuthName "test Auth"
AuthUserFile /etc/httpd/conf.d/.httpuser #用户名密码文件
Require user username1 username2...
Order allow,deny
Allow from 192.168.6
Satisfy Any
Directory>

虚拟主机配置

站点标识: socket
IP相同,但端口不同
IP不同,但端口均为默认端口
FQDN不同
请求报文中首部 –> Host: www.magedu.com
有三种实现方案:
基于ip:为每个虚拟主机准备至少一个ip地址
基于port:为每个虚拟主机使用至少一个独立的port
基于FQDN:为每个虚拟主机使用至少一个FQDN

注意:一般虚拟机不要与main主机混用;因此,要使用虚拟主机,一般先禁用main主机。如果虚拟主机配置的socket和main主机一样会被虚拟主机覆盖,建议最好把socket分清楚或者直接禁用main主机
禁用方法:注释中心主机的DocumentRoot指令即可

基于IP虚拟主机

建议:以下配置最好存放在独立的配置文件中,文件路径–>/etc/httpd/conf.d/VirtualHost.conf


DocumentRoot "/www/a.com/htdocs"
ErrorLog logs/172.16.100.6-error_log
CustomLog logs/172.16.100.6-access_log common


DocumentRoot "/www/b.net/htdocs"
ErrorLog logs/172.16.100.7-error_log
CustomLog logs/172.16.100.7-access_log common


DocumentRoot "/www/c.org/htdocs"
ErrorLog logs/172.16.100.8-error_log
CustomLog logs/172.16.100.8-access_log common

基于端口的虚拟主机(可和基于IP的虚拟主机混和使用)

listen 808
listen 8080

DocumentRoot "/www/a.com/htdocs"
ErrorLog logs/172.16.100.6:808-error_log
CustomLog logs/172.16.100.6:808-access_log common


DocumentRoot "/www/b.net/htdocs"
ErrorLog logs/172.16.100.6:8080-error_log
CustomLog logs/172.16.100.6:8080-access_log common

基于FQDN的虚拟主机:

以下域名需要DNS解析或者为了方便测试可以写到hosts文件里

NameVirtualHost *:80    #httpd2.4不需要此指令

ServerName www.a.com
DocumentRoot "/www/a.com/htdocs"


ServerName www.b.net
DocumentRoot "/www/b.net/htdocs"


ServerName www.c.org
DocumentRoot "/www/c.org/htdocs"

你可能感兴趣的:(Apache)