您的位置:首页 > 运维架构 > Apache

Apache用户认证,域名跳转,访问日志

2017-12-21 00:00 316 查看

Apache用户认证

vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf //把123.com那个虚拟主机编辑成如下内容

<VirtualHost *:80>

DocumentRoot "/data/wwwroot/www.123.com"

ServerName www.123.com

<Directory /data/wwwroot/www.123.com> //指定认证的目录

AllowOverride AuthConfig //这个相当于打开认证的开关

AuthName "123.com user auth" //自定义认证的名字,作用不大

AuthType Basic //认证的类型,一般为Basic,其他类型阿铭没用过

AuthUserFile /data/.htpasswd //指定密码文件所在位置

require valid-user //指定需要认证的用户为全部可用用户

</Directory>

</VirtualHost>

/usr/local/apache2.4/bin/htpasswd -cm /data/.htpasswd aming

重新加载配置-t , graceful

绑定hosts,浏览器测试

curl -x127.0.0.1:80 www.123.com //状态码为401

curl -x127.0.0.1:80 -uaming:passwd www.123.com //状态码为200

还可以针对单个文件进行认证

<VirtualHost *:80>

DocumentRoot "/data/wwwroot/www.123.com"

ServerName www.123.com

<FilesMatch admin.php>

AllowOverride AuthConfig

AuthName "123.com user auth"

AuthType Basic

AuthUserFile /data/.htpasswd

require valid-user

</FilesMatch>

</VirtualHost>

httpd的用户认证

编辑虚拟主机配置文件,在第二段代码中增加内容(红框中)





用apache自带的命令htpasswd创建指定的密码文件,-c是创建(第二次创建不需要加-c),-m是MD5加密,/data/.htpasswd是指定密码文件所在位置



查看 /data/.htpasswd 文件内容,以冒号分割,左边是用户名,右边是MD5加密的密码



查看配置文件是否有错误,并重新加载配置文件



做测试,访问111.com的时候,会提示401状态码



401状态码说明访问的内容需要做用户验证

先在Windows中hosts文件定义111.com



然后再浏览器中访问111.com,输入用户名和密码,即可访问



curl输入用户名和密码,提示状态码200,表示是正常的



针对某一个访问的进行认证

修改虚拟主机配置文件vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf,保存退出



检查配置文件是否存在语法错误,并重新加载配置文件



编辑123.php文件





然后做测试,可以访问123.php



域名跳转

需求,把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) 前面的#

curl -x127.0.0.1:80 -I 123.com //状态码为301

301是永久重定向(建议);302是临时重定向,在搜索引擎这边不太友好,不会把原来域名的权重降低

域名跳转配置

打开虚拟主机配置文件并修改vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf



检查修改的配置文件是否存在语法错误,重新加载配置文件



测试前,先检查Apache是否加载了rewrite模块,没有加载,需要打开;



搜索/rewrite,将前面的注释符号去掉



然后检查修改的配置文件是否存在语法错误,重新加载配置文件



测试:访问2111.com.cn,-I表示不显示内容,只看状态码



也可以查看2111.com.cn访问内容



随便输入字符访问网站,会出现404状态码,表示页面不存在;401状态码表示用户名和密码不正确;验证对了状态码就是200





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

把虚拟主机配置文件改成如下:

<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

查看日志文件



打开主配置文件,搜索LogFormat,红框中就是日志的格式;%h来源IP,%l用户,%u用户名密码,%t时间,%r网址,%s状态码,%b大小,%user-agent用户代理,%referer:跳转到当前位置的上一个网址





编辑虚拟主机配置文件vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf,将common改为combined



检查修改的配置文件是否存在语法错误,重新加载配置文件



访问111.com/123.php





查看日志,Referer需要通过点击链接才能显示出来





扩展

apache虚拟主机开启php的短标签
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: