十周三次课(5月29日)

11.18 Apache用户认证

针对目录做认证:

# vim /etc/httpd24/extra/httpd-vhosts.conf  //编辑虚拟主机配置

<VirtualHost *:80>
    ServerAdmin webmaster@111.com
    DocumentRoot "/home/wwwroot/111.com"
    ServerName 111.com
    ServerAlias www.123.cn
    <Directory /home/wwwroot/111.com>
        AllowOverride AuthConfig
        AuthName "账号密码访问"
        AuthType Basic
        AuthUserFile /data/.htpasswd
        require valid-user
    </Directory>
    ErrorLog "logs/111.com-error_log"

htpasswd命令
这里创建账号密码使用的就是htpasswd命令

#htpasswd -h
htpasswd [-cmdpsD] passwordfile username

htpasswd -b[cmdpsD] passwordfile username password

htpasswd -n[mdps] username

htpasswd -nb[mdps] username password

htpasswd命令选项参数说明:

-c创建一个加密文件。

-n不更新加密文件,只将htpasswd命令加密后的用户名和密码显示在屏幕上。

-m默认htpassswd命令采用MD5算法对密码进行加密,该参数默认情况下可以不加。

-d表示htpassswd命令采用CRYPT算法对密码进行加密。

-s表示htpassswd命令采用SHA算法对密码进行加密。

-p表示htpassswd命令不对密码进行进行加密,即明文密码。

-b表示在htpassswd命令行中一并输入用户名和密码而不是根据提示输入密码。

-D表示删除指定的用户。
# htpasswd -c -m /data/.htpasswd aiker   //创建密码文件,新增账号密码,-m使用MD5加密,-c为创建加密文件
New password: 
Re-type new password: 
Adding password for user aiker

# cat /data/.htpasswd    //查看生成的账号密码,密码是加密过的,
aiker:$apr1$7t9qXYLd$hGI0tZXjCnEydaaqLER3b0
# apachectl-t   //检查配置
# apachectl graceful  //重新加载配置

htpasswd -n aiker也是一样的效果,-n后面一定要跟存在的账号,不更新密码文件,只显示加密后的用户名和密码

htpasswd -nb  /data/.htpasswd aiker 123456

利用htpasswd命令删除用户名和密码

htpasswd -D  /data/.htpasswd aiker

利用htpasswd命令修改密码

htpasswd -D  /data/.htpasswd aiker
htpasswd -b  /data/.htpasswd aiker 123456

先使用htpasswd删除命令删除指定用户,再利用htpasswd添加用户命令创建用户即可实现修改密码的功能。

# curl -I -xlocalhost:80 111.com
HTTP/1.1 401 Unauthorized
Date: Wed, 07 Mar 2018 17:40:17 GMT
Server: Apache/2.4.29 (Unix) PHP/7.2.1
WWW-Authenticate: Basic realm="账号密码访问"  //如果设置了验证没有认证就会报错
Content-Type: text/html; charset=iso-8859-1
[root@localhost src]# htpasswd -c -m /data/.htpasswd aiker  //重新创建账号密码,会覆盖之前的设置
New password: 
Re-type new password: 
Adding password for user aiker
[root@localhost src]# curl -I -xlocalhost:80 111.com -uaiker:ederew
HTTP/1.1 200 OK
Date: Wed, 07 Mar 2018 17:44:31 GMT
Server: Apache/2.4.29 (Unix) PHP/7.2.1
X-Powered-By: PHP/7.2.1
Content-Type: text/html; charset=UTF-8

利用htpasswd命令添加用户

# htpasswd -bc /data/.htpasswd aiker phpss  //密码:phpss,默认采用MD5加密方式。

在原有密码文件中增加下一个用户

[root@localhost src]# htpasswd -b -m /data/.htpasswd gavin //在原来密码文件中新增一个账号,去掉-c选项,即可在第一个用户之后添加第二个用户,依此类推。
New password: 
Re-type new password: 
Adding password for user gavin
[root@localhost src]# curl -I -xlocalhost:80 111.com -ugavin
Enter host password for user 'gavin':
HTTP/1.1 200 OK
Date: Wed, 07 Mar 2018 17:43:51 GMT
Server: Apache/2.4.29 (Unix) PHP/7.2.1
X-Powered-By: PHP/7.2.1
Content-Type: text/html; charset=UTF-8

单个文件认证:

<VirtualHost *:80>
    ServerAdmin webmaster@111.com
    DocumentRoot "/home/wwwroot/111.com"
    ServerName 111.com
    ServerAlias www.123.cn
#    <Directory /home/wwwroot/111.com> #目录认证
    <FilesMatch yhtz.php> #匹配文件认证
        AllowOverride AuthConfig
        AuthName "账号密码访问"
        AuthType Basic
        AuthUserFile /data/.htpasswd
        require valid-user
    </FilesMatch>
#    </Directory>
    ErrorLog "logs/111.com-error_log"
    CustomLog "logs/111.com-access_log" common
</VirtualHost>
[root@localhost 111.com]# curl -I -xlocalhost:80 111.com/yhtz.php
HTTP/1.1 401 Unauthorized
Date: Wed, 07 Mar 2018 17:53:42 GMT
Server: Apache/2.4.29 (Unix) PHP/7.2.1
WWW-Authenticate: Basic realm="账号密码访问"
Content-Type: text/html; charset=iso-8859-1
[root@localhost 111.com]# curl -I -xlocalhost:80 111.com/yhtz.php -uaiker
Enter host password for user 'aiker':
HTTP/1.1 200 OK
Date: Wed, 07 Mar 2018 17:53:55 GMT
Server: Apache/2.4.29 (Unix) PHP/7.2.1
X-Powered-By: PHP/7.2.1

11.19/11.20 域名跳转

111.com做为主域名,把www.123.cn域名跳转到111.com
# sed -i 38,44s/^/#/g /etc/httpd24/extra/httpd-vhosts.conf 注释认证,让配置看起来更容易
注释后的虚拟主机配置

<VirtualHost *:80>
    ServerAdmin webmaster@111.com
    DocumentRoot "/home/wwwroot/111.com"
    ServerName 111.com
    ServerAlias www.123.cn
#    <Directory /home/wwwroot/111.com> #目录认证
#    <FilesMatch yhtz.php> #匹配文件认证
#        AllowOverride AuthConfig
#       AuthName "账号密码访问"
#       AuthType Basic
#       AuthUserFile /data/.htpasswd
#       require valid-user
#    </FilesMatch>
#    </Directory>
    ErrorLog "logs/111.com-error_log"
    CustomLog "logs/111.com-access_log" common
</VirtualHost>
[root@localhost 111.com]# apachectl -M | grep rewrit 
 rewrite_module (shared)  //若无该模块,需要编辑配置文件httpd.conf,删除rewrite_module (shared) 前面的#
<VirtualHost *:80>
    ServerAdmin webmaster@111.com
    DocumentRoot "/home/wwwroot/111.com"
    ServerName 111.com
    ServerAlias www.123.cn
    <IfModule mod_rewrite.c> #加载rewrite模块,httpd.conf里rewrite去掉注释启用
        RewriteEngine on #启用rewrite引擎
        RewriteCond %{HTTP_HOST} !^111.com$ #定义rewrite的条件,主机名(域名)不是111.com满足条件
        RewriteRule ^/(.*)$ http://111.com/$1 [R=301.L] #定义rewrite规则,当满足上面的条件时,这条规则才会执行
    </IfModule>
#    <Directory /home/wwwroot/111.com> #目录认证
#    <FilesMatch yhtz.php> #匹配文件认证
#       AllowOverride AuthConfig
#       AuthName "账号密码访问"
#       AuthType Basic
#       AuthUserFile /data/.htpasswd
#       require valid-user
#    </FilesMatch>
#    </Directory>
    ErrorLog "logs/111.com-error_log"
    CustomLog "logs/111.com-access_log" combined
</VirtualHost>

测试:

# curl -I -xlocalhost:80 www.123.cn
HTTP/1.1 301 Moved Permanently
Date: Wed, 07 Mar 2018 18:39:21 GMT
Server: Apache/2.4.29 (Unix) PHP/7.2.1
Location: http://111.com/
Content-Type: text/html; charset=iso-8859-1
curl -x192.168.0.173:80 www.123.cn/aaa/bbb -I
HTTP/1.1 301 Moved Permanently
Date: Wed, 07 Mar 2018 18:46:09 GMT
Server: Apache/2.4.29 (Unix) PHP/7.2.1
Location: http://111.com/aaa/bbb
Content-Type: text/html; charset=iso-8859-1

11.21 Apache访问日志

# vim /etc/httpd24/httpd.conf    //修改apache配置文件
默认的日志:

<IfModule log_config_module>
    #
    # The following directives define some format nicknames for use with
    # a CustomLog directive (see below).
    #
    LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined    //日志格式,后面的host文件是引用这个格式的名字
    LogFormat "%h %l %u %t \"%r\" %>s %b" common

    <IfModule logio_module>
      # You need to enable mod_logio.c to use %I and %O
      LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio
    </IfModule>

    #
    # The location and format of the access logfile (Common Logfile Format).
    # If you do not define any access logfiles within a <VirtualHost>
    # container, they will be logged here.  Contrariwise, if you *do*
    # define per-<VirtualHost> access logfiles, transactions will be
    # logged therein and *not* in this file.
    #
    CustomLog "logs/access_log" common

    #
    # If you prefer a logfile with access, agent, and referer information
    # (Combined Logfile Format) you can use the following directive.
    #
    #CustomLog "logs/access_log" combined
</IfModule>
<VirtualHost *:80>
    ServerAdmin webmaster@111.com
    DocumentRoot "/home/wwwroot/111.com"
    ServerName 111.com
    ServerAlias www.123.cn
    <IfModule mod_rewrite.c>
        RewriteEngine on
        RewriteCond %{HTTP_HOST} !^111.com$
        RewriteRule ^/(.*)$ http://111.com/$1 [R=301.L]
    </IfModule>
#    <Directory /home/wwwroot/111.com> #目录认证
#    <FilesMatch yhtz.php> #匹配文件认证
#        AllowOverride AuthConfig
#       AuthName "账号密码访问"
#       AuthType Basic
#       AuthUserFile /data/.htpasswd
#       require valid-user
#    </FilesMatch>
#    </Directory>
    ErrorLog "logs/111.com-error_log"
    CustomLog "logs/111.com-access_log" combined  //引用之前定义的日志格式命名
</VirtualHost>

实时查看日志记录:

[root@localhost ~]# tail -f /usr/local/apache2.4/logs/111.com-access_log 
::1 - - [09/Mar/2018:01:01:46 +0800] "GET HTTP://www.123.cn/ HTTP/1.1" 301 223
192.168.0.190 - aiker [09/Mar/2018:01:02:05 +0800] "GET / HTTP/1.1" 200 8
192.168.0.190 - aiker [09/Mar/2018:01:02:16 +0800] "GET / HTTP/1.1" 200 8
192.168.0.190 - aiker [09/Mar/2018:01:03:02 +0800] "GET / HTTP/1.1" 200 8
192.168.0.190 - aiker [09/Mar/2018:01:03:03 +0800] "GET / HTTP/1.1" 200 8
192.168.0.190 - aiker [09/Mar/2018:01:03:04 +0800] "GET / HTTP/1.1" 200 8
192.168.0.190 - aiker [09/Mar/2018:01:03:05 +0800] "GET / HTTP/1.1" 200 8
::1 - - [09/Mar/2018:01:03:29 +0800] "GET HTTP://www.123.cn/ HTTP/1.1" 301 223 "-" "curl/7.29.0"
::1 - - [09/Mar/2018:01:03:33 +0800] "GET HTTP://111.com/ HTTP/1.1" 200 8 "-" "curl/7.29.0"
192.168.0.190 - aiker [09/Mar/2018:01:03:42 +0800] "GET / HTTP/1.1" 200 8 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.186 Safari/537.36"

扩展

apache虚拟主机开启php的短标签

在对应的 虚拟主机 配置文件中加入
php_admin_flag short_open_tag on

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

<?
phpinfo()
?>

只能解析下面这种PHP文件:

<?php
phpinfo()
?>

转载于:https://blog.51cto.com/235571/2120556

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
完整版:https://download.csdn.net/download/qq_27595745/89522468 【程大纲】 1-1 什么是java 1-2 认识java语言 1-3 java平台的体系结构 1-4 java SE环境安装和配置 2-1 java程序简介 2-2 计算机中的程序 2-3 java程序 2-4 java类库组织结构和文档 2-5 java虚拟机简介 2-6 java的垃圾回收器 2-7 java上机练习 3-1 java语言基础入门 3-2 数据的分类 3-3 标识符、关键字和常量 3-4 运算符 3-5 表达式 3-6 顺序结构和选择结构 3-7 循环语句 3-8 跳转语句 3-9 MyEclipse工具介绍 3-10 java基础知识章节练习 4-1 一维数组 4-2 数组应用 4-3 多维数组 4-4 排序算法 4-5 增强for循环 4-6 数组和排序算法章节练习 5-0 抽象和封装 5-1 面向过程的设计思想 5-2 面向对象的设计思想 5-3 抽象 5-4 封装 5-5 属性 5-6 方法的定义 5-7 this关键字 5-8 javaBean 5-9 包 package 5-10 抽象和封装章节练习 6-0 继承和多态 6-1 继承 6-2 object类 6-3 多态 6-4 访问修饰符 6-5 static修饰符 6-6 final修饰符 6-7 abstract修饰符 6-8 接口 6-9 继承和多态 章节练习 7-1 面向对象的分析与设计简介 7-2 对象模型建立 7-3 类之间的关系 7-4 软件的可维护与复用设计原则 7-5 面向对象的设计与分析 章节练习 8-1 内部类与包装器 8-2 对象包装器 8-3 装箱和拆箱 8-4 练习题 9-1 常用类介绍 9-2 StringBuffer和String Builder类 9-3 Rintime类的使用 9-4 期类简介 9-5 java程序国际化的实现 9-6 Random类和Math类 9-7 枚举 9-8 练习题 10-1 java异常处理 10-2 认识异常 10-3 使用try和catch捕获异常 10-4 使用throw和throws引发异常 10-5 finally关键字 10-6 getMessage和printStackTrace方法 10-7 异常分类 10-8 自定义异常类 10-9 练习题 11-1 Java集合框架和泛型机制 11-2 Collection接口 11-3 Set接口实现类 11-4 List接口实现类 11-5 Map接口 11-6 Collections类 11-7 泛型概述 11-8 练习题 12-1 多线程 12-2 线程的生命周期 12-3 线程的调度和优先级 12-4 线程的同步 12-5 集合类的同步问题 12-6 用Timer类调度任务 12-7 练习题 13-1 Java IO 13-2 Java IO原理 13-3 流类的结构 13-4 文件流 13-5 缓冲流 13-6 转换流 13-7 数据流 13-8 打印流 13-9 对象流 13-10 随机存取文件流 13-11 zip文件流 13-12 练习题 14-1 图形用户界面设计 14-2 事件处理机制 14-3 AWT常用组件 14-4 swing简介 14-5 可视化开发swing组件 14-6 声音的播放和处理 14-7 2D图形的绘制 14-8 练习题 15-1 反射 15-2 使用Java反射机制 15-3 反射与动态代理 15-4 练习题 16-1 Java标注 16-2 JDK内置的基本标注类型 16-3 自定义标注类型 16-4 对标注进行标注 16-5 利用反射获取标注信息 16-6 练习题 17-1 顶目实战1-单机版五子棋游戏 17-2 总体设计 17-3 代码实现 17-4 程序的运行与发布 17-5 手动生成可执行JAR文件 17-6 练习题 18-1 Java数据库编程 18-2 JDBC类和接口 18-3 JDBC操作SQL 18-4 JDBC基本示例 18-5 JDBC应用示例 18-6 练习题 19-1 。。。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值