Apache用户认证、域名跳转、访问日志格式

摘要:11.18 Apache用户认证 注意: 本章使用浏览器进行检测的前提是在物理机hosts文件添加虚拟机IP和虚拟主机域名。 配置用户认证 编辑虚拟主机配置文件“httpd-vhosts.conf”。 [root@1 ~]# vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf …… DocumentRoot \"/da....

11.18Apache用户认证

002UASMrzy7605pjKJv15&690.jpg

注意:本章使用浏览器进行检测的前提是在物理机hosts文件添加虚拟机IP和虚拟主机域名。

配置用户认证 编辑虚拟主机配置文件“httpd-vhosts.conf”。

[root@1~]#vim/usr/local/apache2.4/conf/extra/httpd-vhosts.conf …… <VirtualHost*:80> DocumentRoot"/data/wwwroot/111.com" ServerName111.com ServerAliaswww.example.com <Directory/data/wwwroot/111.com> #指定认证的目录 AllowoverrideAuthConfig #该行相当于打开用户认证的开关 AuthName"111.comuserauth" #自定义认证的名字,作用不大 AuthTypeBasic #认证类型,一般为basic AuthUserFile/data/.htpasswd #指定密码文件所在位置(需要手动添加) requirevalid-user #设定需要认证的用户为“AuthUserFile”中定义的所有可用用户 </Directory> ErrorLog"logs/111.com-error_log" CustomLog"logs/111.com-access_log"common </VirtualHost> 创建“httpd-vhosts.conf”中指定的密码文件

[root@1~]#/usr/local/apache2.4/bin/htpasswd-c-m/data/.htpasswdadai Newpassword: Re-typenewpassword: Addingpasswordforuserzx [root@1~]#cat/data/.htpasswd zx:$apr1$F7lSqIT0$hEgMT0Nhuxh6.BpmLvi57/

即,在“/data/.htpasswd”为用户adai(自动创建)创建一个使用MD5算法加密的密码文件。
注意:只有在第一次创建该文件时加-c选项。

配置完成后重新加载

[root@1~]#/usr/local/apache2.4/bin/apachectl-t SyntaxOK [root@1~]#/usr/local/apache2.4/bin/apachectlgraceful 测试

[root@1~]#curl-x192.168.8.131:80111.com-I HTTP/1.1401Unauthorized Date:Mon,31Jul201701:42:50GMT Server:Apache/2.4.27(Unix)PHP/5.6.30 WWW-Authenticate:Basicrealm="111.comuserauth" Content-Type:text/html;charset=iso-8859-1

此时提示状态码为“401”,说明当前所访问的内容需要进行用户认证。

使用用户&密码访问:

[root@1~]#curl-x192.168.8.131:80-uadai:123456111.com-I HTTP/1.1200OK Date:Mon,31Jul201702:18:21GMT Server:Apache/2.4.27(Unix)PHP/5.6.30 X-Powered-By:PHP/5.6.30 Content-Type:text/html;charset=UTF-8

状态码“200”,即访问成功。

用浏览器测试:

 

输入用户名“zx”和密码后即可访问:

 

htpasswd命令

htpasswd命令是Apache的Web服务器内置工具,用于创建和更新储存用户名、域和用户基本认证的密码文件。

语法:htpasswd[option][参数]
Options:
-c:=create,创建一个加密文件
-n:不更新加密文件,只将更新后的用户名密码显示在屏幕上
-m:使用MD5算法对密码进行加密(默认)
-d:使用CRYPT算法对密码进行加密
-p:不对密码进行加密,即明文密码
-s:使用SHA算法对密码进行加密
-b:在命令行一并输入用户名和密码,而不是根据提示输入密码
-D:删除指定用户

应用

对网站中指定文件设置用户认证!

虚拟主机配置

[root@1~]#vim/usr/local/apache2.4/conf/extra/httpd-vhosts.conf <VirtualHost*:80> DocumentRoot"/data/wwwroot/111.com" ServerName111.com ServerAliaswww.example.com #<Directory/data/wwwroot/111.com> <FilesMatch123.php> AllowoverrideAuthConfig AuthName"111.comuserauth" AuthTypeBasic AuthUserFile/data/.htpasswd requirevalid-user </FilesMatch> #</Directory> ErrorLog"logs/111.com-error_log" CustomLog"logs/111.com-access_log"common </VirtualHost>

说明:注释掉<Directory>,取消对目录设定的用户认证,更改为<FilesMatch>,即对文件设定用户认证。

检测

[root@1~]#curl-x192.168.8.131:80111.com welcometo111.com [root@1~]#curl-x192.168.8.131:80111.com/123.php-I HTTP/1.1401Unauthorized Date:Mon,31Jul201703:04:31GMT Server:Apache/2.4.27(Unix)PHP/5.6.30 WWW-Authenticate:Basicrealm="111.comuserauth" Content-Type:text/html;charset=iso-8859-1

说明:此时可以自由访问“111.com”指定的目录,但是当访问目录下的“123.php”文件时会报错:401,即,需要进行用户认证。

使用指定用户名&密码访问:

[root@1~]#curl-x192.168.8.131:80-uzx:123456111.com/123.php welcomto123file 成功!

使用浏览器检测:

访问“111.com”:

 

访问"111.com/123.php":

 

输入指定用户“zx”及密码即可访问:

 

11.19-11.20域名跳转 域名跳转分类及区别 种类:

301表示永久跳转;302表示临时跳转。

区别: 使用效果不同 302跳转是暂时的跳转,搜索引擎会抓取新的内容而保留旧的网址。因为服务器返回302代码,搜索引擎认为新的网址只是暂时的。 301重定向是永久的重定向,搜索引擎在抓取新内容的同时也将旧的网址替换为重定向之后的网址。 SEO使用方式不同
在搜索引擎优化中302跳转被众多黑帽SEO优化人员追求,对网站进行恶意302跳转至非用户目标访问网站,因此搜索引擎对于网站的302跳转通常是比较不友好,所以要慎用302跳转! SEO

SEO(SearchEngineOptimization)搜索引擎优化,在了解搜索引擎自然排名机制的基础上,对网站进行内部及外部的调整优化,改进网站在搜索引擎中的关键词自然排名,获得更多流量,从而达成网站销售及品牌建设的预期目标。

域名跳转配置 配置虚拟主机配置文件:httpd-vhosts.conf。

[root@1~]#vim/usr/local/apache2.4/conf/extra/httpd-vhosts.conf …… <VirtualHost*:80> DocumentRoot"/data/wwwroot/111.com" ServerName111.com ServerAliaswww.example.com <IfModulemod_rewrite.c> #需要mod_rewrite的支持 RewriteEngineon #开启rewrite功能 RewriteCond%{HTTP_HOST}!^111.com$ #Cond=condition,定义rewrite条件:所有非111.com的主机名(域名) RewriteRule^/(.*)$http://111.com/$1[R=301,L] #定义rewrite规则:当满足上面条件时才执行当前规则,即跳转到111.com。 </IfModule> ErrorLog"logs/111.com-error_log" CustomLog"logs/111.com-access_log"common </VirtualHost> 检查系统配置:

[root@1~]#/usr/local/apache2.4/bin/apachectl-t SyntaxOK [root@1~]#/usr/local/apache2.4/bin/apachectlgraceful [root@1~]#/usr/local/apache2.4/bin/apachectl-M

在此检查Apache是否加载了虚拟主机配置中调用的rewrite模块,如果没有加载,需要编辑Apache配置文件“httpd.conf”:

[root@1~]#vim/usr/local/apache2.4/conf/httpd.conf …… LoadModulerewrite_modulemodules/mod_rewrite.so LoadModulephp5_modulemodules/libphp5.so #LoadModulephp7_modulemodules/libphp7.so

即,去掉注释符号“#”,加载rewrite模块。

检测

[root@1~]#/usr/local/apache2.4/bin/apachectl-t SyntaxOK [root@1~]#/usr/local/apache2.4/bin/apachectlgraceful [root@1~]#/usr/local/apache2.4/bin/apachectl-M|greprewrite rewrite_module(shared)

使用curl检测:

[root@adailinux~]#curl-x192.168.8.131:80www.example.com-I HTTP/1.1301MovedPermanently Date:Mon,31Jul201707:17:37GMT Server:Apache/2.4.27(Unix)PHP/5.6.30 Location:http://111.com/ Content-Type:text/html;charset=iso-8859-1

此时,状态码为301,即设定了域名永久跳转!

在浏览器进行检测时,访问“www.example.com”会直接跳转到“111.com”。

11.21Apache访问日志

日志文件所在位置:

[root@1~]#ls/usr/local/apache2.4/logs 111.com-access_logabc.com-access_logaccess_loghttpd.pid 111.com-error_logabc.com-error_logerror_log 自定义日志格式 系统自带日志格式:

LogFormat"%h%l%u%t"%r"%>s%b"%{Referer}i""%{User-Agent}i""combined LogFormat"%h%l%u%t"%r"%>s%b"common #h表示host来源IP,l表示login用户,u表示user用户密码,t表示time时间,r表示request(行为),s表示status状态码,b表示byte大小 #user-agent:用户代理 #referer:跳转到当前位置的上一个网址(即:提供当前IP的网站)

即:有combine和common两种格式,默认使用common模式。

配置日志格式

编辑虚拟主机配置文件“httpd-vhosts.conf”:

[root@1~]#vim/usr/local/apache2.4/conf/extra/httpd-vhosts.conf <VirtualHost*:80> DocumentRoot"/data/wwwroot/111.com" ServerName111.com ServerAliaswww.example.com <IfModulemod_rewrite.c> RewriteEngineon RewriteCond%{HTTP_HOST}!^111.com$ RewriteRule^/(.*)$http://111.com/$1[R=301,L] </IfModule> ErrorLog"logs/111.com-error_log" CustomLog"logs/111.com-access_log"combined </VirtualHost>

说明:将日志文件后面原有common改为combined。

重新加载:

[root@1~]#/usr/local/apache2.4/bin/apachectl-t SyntaxOK [root@1~]#/usr/local/apache2.4/bin/apachectlgraceful

样式:

[root@1~]#cat/usr/local/apache2.4/logs/111.com-access_log

 

Apache虚拟主机开启PHP短标签

在虚拟主机配置文件中加入如下内容即可:

php_admin_flagshort_open_tagon 短标签作用

如果不开启短标签,服务器将无法解析如下形式的PHP文件:

<? phpinfo() ?>

而只能解析:

<?php phpinfo() ?>

这种形式的PHP文件。