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

Apache用户认证

通常状况咱们访问网站的时候并不须要用户认证,可是当网站上某些网页只想提供给指定的用户访问时,能够经过用户认证来实现。 下面这个示例是在虚拟主机配置文件中作的,#用户认证下面的是配置的内容php

  • 编辑配置文件 `vim /usr/local/apache/conf/extra/httpd-vhosts.conf
<VirtualHost *:80>
    DocumentRoot "/tmp/ccc.com"
    ServerName ccc.com
    ServerAlias www.ccc.com
    #用户认证
    <Directory /tmp/ccc.com>              指定要认证的目录
        AllowOverride AuthConfig          至关于打开认证的开关
        AuthName "ccc.com user auth"      自定义认证名,意义不大
        AuthType Basic                    通常设定为basic就行
        AuthUserfile /data/.htpasswd      指定密码文件所在位置
        require valid-user                指定须要认证的用户为所有可用用户
       </Directory>
    ErrorLog "ccc.com_log"
    CustomLog "ccc.com_log" common
</VirtualHost>
  • 检测配置文件是否有语法错误 /usr/local/apache/bin/apachectl -t
  • /从新加载配置文件 /usr/local/apache/bin/apachectl graceful
  • 建立认证用户并设置密码 /usr/local/apache/bin/htpasswd -c -m /data/.htpasswd hello 其中-c是建立密码文件,-m是指定加密方式,hello是用户名。再次添加用户就不用-c选项了。
  • 查看用户和密码是否建立成功 cat /data/.htpasswd
  • 浏览器测试

htppasswd命令

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

参数:算法

  • c:=create,建立一个加密文件apache

  • n:不更新加密文件,只将更新后的用户名密码显示在屏幕上vim

  • m:使用MD5算法对密码进行加密(默认)浏览器

  • d:使用CRYPT算法对密码进行加密服务器

  • p:不对密码进行加密,即明文密码curl

  • s:使用SHA算法对密码进行加密ide

  • b:在命令行一并输入用户名和密码,而不是根据提示输入密码工具

  • D:删除指定用户

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

编辑httpd配置文件/usr/local/apache2.4/conf/httpd.conf

  • 用户认证还能够对单个文件进行认证 好比一个网站下的某一个网页须要认证,其它不用认证,则须要另外一种配置方法
<VirtualHost *:80>
    DocumentRoot "/tmp/abc.com"
    ServerName abc.com
    <FilesMatch kkk.php>                须要认证的文件,该文件须要在 DocumentRoot指定的目录下
        AllowOverride AuthConfig
        AuthName "abc.com user auth"
        AuthType Basic
        AuthUserfile /data/.htpasswd
        require valid-user
    </FilesMatch>
    ErrorLog "abc.com_log"
    CustomLog "abc.com_log" common
</VirtualHost>

域名跳转

  • 302跳转是暂时的跳转,搜索引擎会抓取新的内容而保留旧的网址。由于服务器返回302代码,搜索引擎认为新的网址只是暂时的。
  • 301重定向是永久的重定向,搜索引擎在抓取新内容的同时也将旧的网址替换为重定向以后的网址。
  • SEO(Search Engine Optimization)搜索引擎优化,在了解搜索引擎天然排名机制的基础上,对网站进行内部及外部的调整优化,改进网站在搜索引擎中的关键词天然排名,得到更多流量,从而达成网站销售及品牌建设的预期目标。

示例 把abc.com域名跳转到www.abc.com ,配置

<VirtualHost *:80>
    DocumentRoot "/tmp/abc.com"
    ServerName www.abc.com
    ServerAlias abc.com
# 域名跳转
    <IfModule mod_rewrite.c>
# 须要mod_rewrite模块的支持
        RewriteEngine on
#打开rewrite功能
        RewriteCond %{HTTP_HOST} !^www.abc.com$
#定义rewrite的条件,意思是域名不是www.abc.com的知足条件
         RewriteRule ^/(.*)$ http://www.abc.com/$1 [R=301,L]
        #RewriteRule^/.(.*)$http://www.abc.com/$1 [R=301,L]
#定义rewrite规则,当知足上面条件时,这条规则才生效        
    </IfModule>
    ErrorLog "abc.com_log"
    CustomLog "abc.com_log" common
  • 配置完后须要加载mod_rewrite模块 vim httpd.conf ,将rewrite_modules (shared)前面的#删除
  • 从新加载配置文件 .....graceful
  • 使用curl -x127.0.0.1 kji.com 状态码显示为301
[root@localhost ~]# curl -x127.0.0.1:80 -l 456.com
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>301 Moved Permanently</title>
</head><body>
<h1>Moved Permanently</h1>
<p>The document has moved <a href="http://www.abc.com/">here</a>.</p>
</body></html>

Apache访问日志

每一次访问请求都会记录在日志中 Apache的访问日志的路径在Apache的安装路径下面/usr/local/apache/logs/下

  • access_log 访问日志,access_log为访问日志,记录全部对apache服务器进行请求的访问,它的位置和内容由CustomLog指令控制,LogFormat指令能够用来简化该日志的内容和格式

  • error_log 错误日志 error_log为错误日志,记录下任何错误的处理请求,它的位置和内容由ErrorLog指令控制,一般服务器出现什么错误,首先对它进行查阅,是一个最重要的日志文件。

  • 系统自带两种日志格式:combine和common,默认使用common模式。 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行为(curl时,加I为head,不加Iget)

  • s表示status状态码,b表示byte大小

  • user-agent:用户代理(使用什么方式访问,浏览器或者curl命令或者其它)

  • referer:跳转到当前位置的上一个网址(即:提供当前IP的网站)

相关文章
相关标签/搜索