Apache用户认证
用户认证
修改虚拟主机配置文件
/usr/local/apache2/conf/extra/httpd-vhosts.conf
在配置文件中加入如下配置:
#因为是针对目录,所以使用<Directory>,后面跟目录
<Directory /data/wwwroot/111.com>
#表示开启认证
AllowOverride AuthConfig
#提示信息,可自定义
AuthName "111.com user"
#认证类型,使用Basic即可
AuthType Basic
#认证密码文件位置
AuthUserFile /data/wwwroot/.htpasswd
#指定需要认证的用户为全部可用用户
require valid-user
</Directory>
增加配置文件
<Directory /data/wwwroot/111.com>
AllowOverride AuthConfig
AuthName "111.com user"
AuthType Basic
AuthUserFile /data/wwwroot/.htpasswd
require valid-user
</Directory>
创建用户密码文件
创建密码文件可以使用Apache自带的htpasswd命令
/usr/local/apache2.4/bin/htpasswd -c -m /data/wwwroot/.htpasswd jiangshan
- /data/wwwroot/.hrpasswd :文件路径
- jiangshan :用户名
- c:为了创建文件以及第一个用户,文件存在或创建第二个用户时不需要使用
- m: 这里是列表文本m:表示密码使用MD5加密
检查、重载配置文件
[root@jiangshan~]# /usr/local/apache2.4/bin/apachectl -t
Syntax OK
[root@jiangshan~]# /usr/local/apache2.4/bin/apachectl graceful
curl测试
curl -x127.0.0.1 :80 -ujiangshan:844878355 -I aaa.com
curl使用-u跟用户:密码可以直接认证,状态码为200
####文件认证
修改虚拟主机配置文件
/usr/local/apache2/conf/extra/httpd-vhosts.conf
在配置文件中加入如下配置:
#因为是针对文件,所以使用<FilesMatch>,后面跟文件
<Directory /data/wwwroot/111.com>
#表示开启认证
AllowOverride AuthConfig
#提示信息,可自定义
AuthName "111.com user"
#认证类型,使用Basic即可
AuthType Basic
#认证密码文件位置
AuthUserFile /data/wwwroot/.htpasswd
#指定需要认证的用户为全部可用用户
require valid-user
</Directory>
创建用户密码文件
/usr/local/apache2.4/bin/htpasswd -m /data/wwwroot/.htpasswd jiangshan
检查重载配置文件并测试
[root[@jiangshan](https://my.oschina.net/u/2359274) ~]# /usr/local/apache2.4/bin/apachectl -t
Syntax OK
[root[@jiangshan](https://my.oschina.net/u/2359274) ~]# /usr/local/apache2.4/bin/apachectl graceful
Apache使用\匹配目录,使用\匹配文件。但是,需要注意的是直接使用\的话,只能匹配网站根目录下的文件。如果需要匹配非根目录下的文件,有一下两种方法。
-
直接使用\,后面个文件
-
先使用\指定非根目录,再使用\匹配文件
域名跳转
Apache Rewrite的主要功能
- 就是实现URL的跳转和隐藏真实地址,基于Perl语言的正则表达式规范。平时帮助我们实现拟静态,拟目录,域名跳转,防止盗链等
2.Apache Rewrite的配置 Apache下的Rewrite配置主要有两种,一种是针对整个apache服务器的配置,此种配置的Rewrite规则是直接在httpd.conf下书写。配置步骤如下:
- 去除httpd.conf文件中"#LoadModule rewrite_module modules/mod_rewrite.so"前面的"#"号;
- 然后再在httpd.conf中书写如下规则:
RewriteEngine on
#当访问任何以t_开头,以.html结尾的文件时,将$1用与(.*)匹配的字符替换后,访问相应的test.php页面
RewriteRule ^/t_(.*).html$ /test.php?id=$1
另一种是针对apache服务器下的某一目录的配置,此种配置的Rewrite规则需在此目录下建立一个.htaccess文件来书写。配置步骤如下:
- 去除httpd.conf文件中"#LoadModule rewrite_module modules/mod_rewrite.so"前面的"#"号;
- 修改httpd.conf文件中的"AllowOverride None"为"AllowOverride all",同时最好将Options也置为"all",否则可能会出问题。
- 在目录中建立.htaccess文件,并用记事本打开,书写如下规则:
RewriteEngine on
RewriteRule ^/t_(.*).html$ /test.php?id=$1
Apache Rewrite规则的书写
RewriteEngine on
RewriteRule ^/test([0-9]*).html$ /test.php?id=$1
RewriteRule ^/new([0-9]*)/$ /new.php?id=$1 [R]
RewriteEngine on
#当我们访问的地址不是以www.163.com开头的,那么执行下一条规则
RewriteCond %{HTTP_HOST} !^www.163.com [NC]
RewriteRule ^/(.*) http://www.163.com/ [L]
Apache Rewrite规则修正符
- R 强制外部重定向
- F 禁用URL,返回403HTTP状态码。
- G 强制URL为GONE,返回410HTTP状态码。
- P 强制使用代理转发。
- L 表明当前规则是最后一条规则,停止分析以后规则的重写。
- N 重新从第一条规则开始运行重写过程。
- C 与下一条规则关联
如果规则匹配则正常处理,以下修正符无效
- T=MIME-type(force MIME type) 强制MIME类型
- NS 只用于不是内部子请求
- NC 不区分大小写
- QSA 追加请求字符串
- NE 不在输出转义特殊字符 %3d$1 等价于 =$1
修改虚拟主机配置文件
虚拟主机配置文件
/usr/local/apache2/conf/extra/httpd-vhosts.conf
在对应的虚拟主机配置文件中加入
#使用mod_rewrite.c模块 <IfModule mod_rewrite.c> #表示模块引擎打开 RewriteEngine on #设置主域名,!表示取反,不是该域名的都执行下面的规则 RewriteCond %{HTTP_HOST} !^111.com$ #规则,设置跳转后域名与跳转状态 RewriteRule ^/(.*)$ http://111.com/$1 [R=301,L] </IfModule>
检查mod_rewrite.c模块是否加载
检查是否加载
[root@jiangshan111.com]# /usr/local/apache2.4/bin/apachectl -M |grep "rewrite" rewrite_module (shared)
未加载如何解决
编辑Apache主配置文件httpd.conf,找到”rewrite_module“所在行,取消注释
检查重载配置文件
[root@allen1 111.com]# /usr/local/apache2.4/bin/apachectl -t Syntax OK [root@allen1 111.com]# /usr/local/apache2.4/bin/apachectl graceful
- 使用curl测试,测试结果为301
- 301为永久跳转,302为临时跳转
### Apache访问日志
[资料](https://www.phpsong.com/339.html)
访问日志记录用户的每一个请求
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
把虚拟主机配置文件改成如下:
<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)