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

Stella981
• 阅读 305

11.18 Apache用户认证

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

配置用户认证

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

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

  • 创建“httpd-vhosts.conf”中指定的密码文件

    [root@adailinux ~]# /usr/local/apache2.4/bin/htpasswd -c -m /data/.htpasswd adai New password: Re-type new password: Adding password for user adai

    [root@adailinux ~]# cat /data/.htpasswd adai:$apr1$F7lSqIT0$hEgMT0Nhuxh6.BpmLvi57/

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

  • 配置完成后重新加载

    [root@adailinux ~]# /usr/local/apache2.4/bin/apachectl -t Syntax OK [root@adailinux ~]# /usr/local/apache2.4/bin/apachectl graceful

  • 测试

    [root@adailinux ~]# curl -x192.168.8.131:80 111.com -I HTTP/1.1 401 Unauthorized Date: Mon, 31 Jul 2017 01:42:50 GMT Server: Apache/2.4.27 (Unix) PHP/5.6.30 WWW-Authenticate: Basic realm="111.com user auth" Content-Type: text/html; charset=iso-8859-1

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

使用用户&密码访问:

[root@adailinux ~]# curl -x192.168.8.131:80 -uadai:123456 111.com -I
HTTP/1.1 200 OK
Date: Mon, 31 Jul 2017 02:18:21 GMT
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”,即访问成功。

用浏览器测试:

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

htpasswd命令

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

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

应用

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

  • 虚拟主机配置

    [root@adailinux ~]# vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf

    <VirtualHost *:80> DocumentRoot "/data/wwwroot/111.com" ServerName 111.com ServerAlias www.example.com #<Directory /data/wwwroot/111.com> <FilesMatch 123.php> Allowoverride AuthConfig AuthName "111.com user auth" AuthType Basic AuthUserFile /data/.htpasswd require valid-user # ErrorLog "logs/111.com-error_log" CustomLog "logs/111.com-access_log" common

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

  • 检测

    [root@adailinux ~]# curl -x192.168.8.131:80 111.com welcome to 111.com

    [root@adailinux ~]# curl -x192.168.8.131:80 111.com/123.php -I HTTP/1.1 401 Unauthorized Date: Mon, 31 Jul 2017 03:04:31 GMT Server: Apache/2.4.27 (Unix) PHP/5.6.30 WWW-Authenticate: Basic realm="111.com user auth" Content-Type: text/html; charset=iso-8859-1

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

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

[root@adailinux ~]# curl -x192.168.8.131:80  -uadai:123456 111.com/123.php 
welcom to 123file    
成功!

使用浏览器检测:

访问 “111.com”:

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

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

11.19-11.20 域名跳转

域名跳转分类及区别

种类:

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

区别:

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

SEO

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

域名跳转配置

  • 配置虚拟主机配置文件:httpd-vhosts.conf。

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

  • 检查系统配置:

    [root@adailinux ~]# /usr/local/apache2.4/bin/apachectl -t Syntax OK [root@adailinux ~]# /usr/local/apache2.4/bin/apachectl graceful [root@adailinux ~]# /usr/local/apache2.4/bin/apachectl -M

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

[root@adailinux ~]# vim /usr/local/apache2.4/conf/httpd.conf   
……
LoadModule rewrite_module modules/mod_rewrite.so
LoadModule php5_module        modules/libphp5.so
#LoadModule php7_module        modules/libphp7.so

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

  • 检测

    [root@adailinux ~]# /usr/local/apache2.4/bin/apachectl -t Syntax OK [root@adailinux ~]# /usr/local/apache2.4/bin/apachectl graceful [root@adailinux ~]# /usr/local/apache2.4/bin/apachectl -M |grep rewrite rewrite_module (shared)

使用curl检测:

[root@adailinux ~]# curl -x192.168.8.131:80 www.example.com -I
HTTP/1.1 301 Moved Permanently
Date: Mon, 31 Jul 2017 07:17:37 GMT
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.21 Apache访问日志

日志文件所在位置:

[root@adailinux ~]# ls /usr/local/apache2.4/logs
111.com-access_log  abc.com-access_log  access_log  httpd.pid
111.com-error_log   abc.com-error_log   error_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@adailinux ~]# vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
<VirtualHost *:80>
    DocumentRoot "/data/wwwroot/111.com"
    ServerName 111.com
    ServerAlias www.example.com
    <IfModule mod_rewrite.c>
        RewriteEngine on
        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@adailinux ~]# /usr/local/apache2.4/bin/apachectl -t
Syntax OK
[root@adailinux ~]# /usr/local/apache2.4/bin/apachectl graceful

样式:

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

Apache虚拟主机开启PHP短标签

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

php_admin_flag short_open_tag on

短标签作用

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

<?
phpinfo()
?>

而只能解析:

<?php
phpinfo()
?>

这种形式的PHP文件。

点赞
收藏
评论区
推荐文章
刚刚好 刚刚好
2个月前
css问题
1、 在IOS中图片不显示(给图片加了圆角或者img没有父级) <div<img src""/</div div {width: 20px; height: 20px; borderradius: 20px; overflow: h
blmius blmius
1年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录 问题 用navicat导入数据时,报错: 原因这是因为当前的MySQL不支持datetime为0的情况。 解决修改sql\mode: sql\mode:SQL Mode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。 全局s
晴空闲云 晴空闲云
2个月前
css中box-sizing解放盒子实际宽高计算
我们知道传统的盒子模型,如果增加内边距padding和边框border,那么会撑大整个盒子,造成盒子的宽度不好计算,在实务中特别不方便。boxsizing可以设置盒模型的方式,可以很好的设置固定宽高的盒模型。 盒子宽高计算假如我们设置如下盒子:宽度和高度均为200px,那么这会这个盒子实际的宽高就都是200px。但是当我们设置这个盒子的边框和内间距的时候,那
艾木酱 艾木酱
1个月前
快速入门|使用MemFire Cloud构建React Native应用程序
> MemFire Cloud是一款提供云数据库,用户可以创建云数据库,并对数据库进行管理,还可以对数据库进行备份操作。它还提供后端即服务,用户可以在1分钟内新建一个应用,使用自动生成的API和SDK,访问云数据库、对象存储、用户认证与授权等功能,可专
Wesley13 Wesley13
1年前
LNMP架构之虚拟主机配置、用户认证及域名重定向
本文索引: * 配置nginx虚拟主机 * nginx用户认证 * 针对目录 * 针对文件 * 域名重定向 * * * ### 配置nginx虚拟主机 * 修改nginx主配置文件 [root@localhost nginx-1.12.2]# vim /usr/local/nginx/conf/ngi
Stella981 Stella981
1年前
Apache用户认证,域名跳转,Apache访问日志
### 11月15日任务 11.18 Apache用户认证 11.19/11.20 域名跳转 11.21 Apache访问日志 **1.Apache用户认证** ![](https://oscimg.oschina.net/oscnet/234405d51ede2341f7f2ec6134adbca6095.jpg) *  vim /us
Stella981 Stella981
1年前
41.Apache用户认证及访问日志 域名跳转
11.18 Apache用户认证 11.19/11.20 域名跳转 11.21 Apache访问日志 扩展  apache虚拟主机开启php的短标签 [http://ask.apelearn.com/question/5370](https://www.oschina.net/action/GoToLink?url=http%3A%2F%2Fask.
Wesley13 Wesley13
1年前
LAMP架构之用户认证、域名跳转及访问日志
本文索引: * Apache用户认证 * 针对目录 * 针对单个文件 * 设置域名跳转 * 基本知识介绍 * 如何配置 * Apache访问日志 * * * ### apache用户认证 #### 针对目录 先确保主配置文件内开启了虚拟主机服务 [root@localhost ~
Stella981 Stella981
1年前
Apache用户认证、域名跳转、访问日志格式
11.18 Apache用户认证 ---------------- **注意:** 本章使用浏览器进行检测的前提是在物理机hosts文件添加虚拟机IP和虚拟主机域名。 ### 配置用户认证 * 编辑虚拟主机配置文件“httpd-vhosts.conf”。 [root@1 ~]# vim /usr/local/apache2.4/conf/
helloworld_28799839 helloworld_28799839
2个月前
常用知识整理
# Javascript ## 判断对象是否为空 ```js Object.keys(myObject).length === 0 ``` ## 经常使用的三元运算 > 我们经常遇到处理表格列状态字段如 `status` 的时候可以用到 ``` vue