httpd 的用户认证
网站的特殊页面需要二级认证
- vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf // 编辑 111.com 虚拟主机
- <VirtualHost *:80>
- DocumentRoot "/data/wwwroot/111.com"
- ServerName 111.com
- <Directory /data/wwwroot/111.com> #// 指定认证的目录
- AllowOverride AuthConfig #// 这个相当于打开认证的开关
- AuthName "111.com user auth" #// 自定义认证的名字, 作用不大
- AuthType Basic #// 认证的类型, 一般为 Basic, 其他类型阿铭没用过
- AuthUserFile /data/.htpasswd #// 指定密码文件所在位置
- require valid-user #// 指定需要认证的用户为全部可用用户
- </Directory>
- </VirtualHost>
- /usr/local/apache2.4/bin/htpasswd -cm /data/.htpasswd aming // 创建 / data/.htpasswd 密码文件, 并加入用户 aming, 设置密码为 MD5 加密.
- [root@aminglinux-02 ~]# /usr/local/apache2.4/bin/htpasswd -cm /data/.htpasswd aming
- New password:
- Re-type new password:
- Adding password for user aming
- [root@aminglinux-02 ~]# cat /data/.htpasswd
aming:$apr1$IcrnKsgm$peDVR4iChx.0E9/zaD.HK.
- /usr/local/apache2.4/bin/apachectl -t
- /usr/local/apache2.4/bin/apachectl graceful
测试
- [root@aminglinux-02 ~]# curl -x127.0.0.1:80 -uaming:123456 111.com
- 111.com[root@aminglinux-02 ~]# curl -x127.0.0.1:80 111.com -I
- HTTP/1.1 401 Unauthorized ##401 表示这个页面需要用户认证
Date: Mon, 31 Jul 2017 15:03:56 GMT
- Server: Apache/2.4.27 (Unix) PHP/7.1.6
- WWW-Authenticate: Basic realm="111.com user auth"
- Content-Type: text/html; charset=iso-8859-1
- [root@aminglinux-02 ~]# curl -x127.0.0.1:80 -uaming:123456 111.com
- 111.com[root@aminglinux-02 ~]#
对单个文件进行认证
- <VirtualHost *:80>
- DocumentRoot "/data/wwwroot/www.123.com"
- ServerName www.123.com
- <FilesMatch admin.php> #// 对 admin.php 页面进行认证
- AllowOverride AuthConfig
- AuthName "123.com user auth"
- AuthType Basic
- AuthUserFile /data/.htpasswd
- require valid-user
- </FilesMatch>
- </VirtualHost>
- [root@aminglinux-02 ~]# /usr/local/apache2.4/bin/apachectl -t
- Syntax OK
- [root@aminglinux-02 ~]# /usr/local/apache2.4/bin/apachectl graceful
- [root@aminglinux-02 ~]# curl -x127.0.0.1:80 111.com/admin.php -I
- HTTP/1.1 401 Unauthorized
Date: Mon, 31 Jul 2017 15:26:10 GMT
- Server: Apache/2.4.27 (Unix) PHP/7.1.6
- WWW-Authenticate: Basic realm="111.com user auth"
- Content-Type: text/html; charset=iso-8859-1
- [root@aminglinux-02 ~]# curl -x127.0.0.1:80 -uaming:123456 111.com/admin.php
- admin.php[root@aminglinux-02 ~]#
域名跳转
需求, 把 123.com 域名跳转到 www.123.com, 配置如下:
- <VirtualHost *:80>
- DocumentRoot "/data/wwwroot/www.123.com"
- ServerName www.123.com
- ServerAlias 123.com
- <IfModule mod_rewrite.c> // 需要 mod_rewrite 模块支持
- RewriteEngine on // 打开 rewrite 功能
- RewriteCond %{HTTP_HOST} !^www.123.com$ // 定义 rewrite 的条件, 主机名 (域名) 不是 www.123.com 满足条件
RewriteRule ^/(.*)$ http://www.123.com/$1 [R=301,L] // 定义 rewrite 规则, 当满足上面的条件时, 这条规则才会执行
- </IfModule>
- </VirtualHost>
- /usr/local/apache2/bin/apachectl -M|grep -i rewrite // 若无该模块, 需要编辑配置文件 httpd.conf, 删除 rewrite_module (shared) 前面的 #
重新加载配置 - t , graceful
curl -x127.0.0.1:80 -I 123.com // 状态码为 301 永久跳转, 302 临时跳转, 401 需要验证, 404 页面不存在, 403 未授权,
apache 访问日志记录用户的每一个请求
vim /usr/local/apache2.4/conf/httpd.conf // 搜索 LogFormat
LogFormat "%h %l %u %t \"%r\"%>s %b \"%{Referer}i\"\"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\"%>s %b" common
默认是 common, 改为 combined,h 来源 ip,u 用户, t 是时间, r 行为, s 是状态码, b 是大小, Referer 是进入当前页面得上一个页面得地址, User-Agent 用户代理
即用户使用的浏览器, curl 命令等
把虚拟主机配置文件改成如下:
- <VirtualHost *:80>
- DocumentRoot "/data/wwwroot/www.123.com"
- ServerName www.123.com
- ServerAlias 123.com
- CustomLog "logs/123.com-access_log" combined
- </VirtualHost>
重新加载配置文件 -t,graceful
- curl -x127.0.0.1:80 -I 123.com
- tail /usr/local/apache2.4/logs/123.com-access_log
扩展
apache 虚拟主机开启 php 的短标签 http://www.aminglinux.com/bbs/thread-5370-1-1.html
来源: http://www.bubuko.com/infodetail-2623391.html