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

简介:

httpd的用户认证

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

配置用户认证

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

    [root@localhost ~]# vim /usr/local/apache2.4/conf/httpd.conf
    <Directory "/usr/local/apache2.4/htdocs/">
    ......
    #将AllowOverride后面的None改成AuthConfig
    #AllowOverride None
    #添加下面几行内容:
    Allowoverride AuthConfig
    #打开用户认证的开关
    AuthName "111.com user auth"
    #登录时提示内容,作用不大
    AuthType Basic
    #认证方式,一般为Basic
    AuthUserFile /data/.htpasswd
    #指定密码文件的位置(密码文件需手动添加)
    require valid-user
    #设定需要认证的用户,valid-user为“AuthUserFile”中定义的所有用户
    </Directory>

  • 创建httpd.conf 中指定的密码文件

    [root@localhost ~]# /usr/local/apache2.4/bin/htpasswd -c -m /data/.htpasswd huang 
    New password: 
    Re-type new password: 
    Adding password for user huang
    [root@localhost ~]# cat /data/.htpasswd 
    huang:$apr1$4M2zku4l$pny2EUPn6ouM7wjqHCaj.0

    -c创建文件,-m使用md5加密。只有在第一次创建文件时才使用-c参数。创建其它用户也要通过htpasswd命令创建。

  • 配置完成后重新加载

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

  • 测试

    [root@localhost ~]# curl -x192.168.159.128:80 111.com -I
    HTTP/1.1 401 Unauthorized
    Date: Wed, 20 Dec 2017 07:33:15 GMT
    Server: Apache/2.4.29 (Unix) PHP/7.1.6
    WWW-Authenticate: Basic realm="111.com user auth"
    Content-Type: text/html; charset=iso-8859-1

    提示状态码为“401”,说明当前访问的内容需要进行用户认证。111.com为任意地址,因为配置文件中SeverName www.example.com:80。

    使用用户名和密码访问:
    [root@localhost ~]# curl -x192.168.159.128:80 -uhuang:159820 111.com -I
    HTTP/1.1 200 OK
    Date: Wed, 20 Dec 2017 08:53:27 GMT
    Server: Apache/2.4.29 (Unix) PHP/7.1.6
    Last-Modified: Mon, 11 Jun 2007 18:53:14 GMT
    ETag: "2d-432a5e4a73a80"
    Accept-Ranges: bytes
    Content-Length: 45
    Content-Type: text/html

    状态码为200,访问成功。其中用户名密码格式为 -u用户名:密码。

用浏览器测试:访问地址,会提示输入账号密码。输入账号密码后即可访问。

  • htppasswd命令

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

参数:

-c:=create,创建一个加密文件

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

-m:使用MD5算法对密码进行加密(默认)

-d:使用CRYPT算法对密码进行加密

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

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

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

-D:删除指定用户

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

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

    [root@localhost ~]# vim /usr/local/apache2.4/conf/httpd.conf
    <FilesMatch 1.php>

    Allowoverride AuthConfig

    AuthName "111.com user auth"
    AuthType Basic
    AuthUserFile /data/.htpasswd
    require valid-user
    </FilesMatch>

    添加上面内容。

  • 配置完重新加载

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

  • 检测

    可以访问111.com
    [root@localhost ~]# curl -x192.168.159.128:80 111.com
    <html><body><h1>It works!</h1></body></html>
    不可以访问111.com/1.php,代码401,1.php需要用户名密码才能访问。
    [root@localhost ~]# curl -x192.168.159.128:80 111.com/1.php -I
    HTTP/1.1 401 Unauthorized
    Date: Wed, 20 Dec 2017 09:24:52 GMT
    Server: Apache/2.4.29 (Unix) PHP/7.1.6
    WWW-Authenticate: Basic realm="111.com user auth"
    Content-Type: text/html; charset=iso-8859-1
    使用用户名密码正常访问111.com/1.php
    [root@localhost ~]# curl -x192.168.159.128:80 -uhuang:159820 111.com/1.php -I
    HTTP/1.1 200 OK
    Date: Wed, 20 Dec 2017 09:25:03 GMT
    Server: Apache/2.4.29 (Unix) PHP/7.1.6
    X-Powered-By: PHP/7.1.6
    Content-Type: text/html; charset=UTF-8

用浏览器测试,能直接访问111.com。访问111.com/1.php需要用户名和密码。

对httpd虚拟主机设置用户认证

  • 编辑虚拟主机配置文件 /usr/local/apache2.4/conf/extra/httpd-vhosts.conf

    localhost ~]# vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
    添加下面内容:
    <Directory /usr/local/apache2.4/htdocs>
    AllowOverride AuthConfig
    #打开用户认证的开关
    AuthName "wellcome"
    #登录时提示内容,作用不大
    AuthType Basic
    #认证方式,一般为Basic
    AuthUserFile /data/.htpasswd
    #指定密码文件的位置(密码文件需手动添加)
    require valid-user
    #设定需要认证的用户,valid-user为“AuthUserFile”中定义的所有用户
    </Directory>

配置完成后检测更新配置。访问111.com和111.com/1.php都需要密码。

  • 指定文件设置用户配置

    localhost ~]# vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
    添加下面内容:
    <FilesMatch 1.php> 
    AllowOverride AuthConfig
    #打开用户认证的开关
    AuthName "wellcome"
    #登录时提示内容,作用不大
    AuthType Basic
    #认证方式,一般为Basic
    AuthUserFile /data/.htpasswd
    #指定密码文件的位置(密码文件需手动添加)
    require valid-user
    #设定需要认证的用户,valid-user为“AuthUserFile”中定义的所有用户
    </FilesMatch>

    配置完成后检测更新配置。访问111.com不需要密码,访问111.com/1.php需要密码。

注意: apache虚拟主机中,第一个配置为默认虚拟主机。当为第二个虚拟主机配置用户认证后,访问时不能直接访问ip,需要访问ServerName 地址。

域名跳转

域名跳转分类及区别:

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

区别:

  • 使用效果不同

    302跳转是暂时的跳转,搜索引擎会抓取新的内容而保留旧的网址。因为服务器返回302代码,搜索引擎认为新的网址只是暂时的。
    301重定向是永久的重定向,搜索引擎在抓取新内容的同时也将旧的网址替换为重定向之后的网址。

  • SEO使用方式不同

    在搜索引擎优化中302跳转被众多黑帽SEO优化人员追求,对网站进行恶意302跳转至非用户目标访问网站,因此搜索引擎对于网站的302跳转通常是比较不友好,所以要慎用302跳转!

SEO

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

域名跳转配置

  • 配置虚拟主机配置文件:/usr/local/apache2.4/conf/extra/httpd-vhosts.conf

    [root@localhost ~]# 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>
    #需要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。
    </IfModule>

  • 检查系统配置

    [root@localhost ~]# /usr/local/apache2.4/bin/apachectl -t
    Syntax OK
    [root@localhost ~]# /usr/local/apache2.4/bin/apachectl graceful
    检查apache是否加载了虚拟主机中调用的rewrite模块:
    [root@localhost ~]# /usr/local/apache2.4/bin/apachectl -M | grep rewrite

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

修改完配置文件需要重新检测、刷新。

  • 使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”。

Apache 访问日志

每一次访问请求都会记录在日志中

  • apache访问日志的目录为/usr/local/apache2.4/logs/

    [root@localhost ~]# ls /usr/local/apache2.4/logs/
    111.com-access_log 111.com-error_log abc.com-access_log abc.com-error_log access_log error_log httpd.pid

日志目录下有每个虚拟主机的日志文件

  • 自定义日志格式

    系统自带两种日志格式: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的网站)

  • 配置日志格式

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

    [root@localhost ~]# vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf 
    <VirtualHost *:80>
    ...
    ErrorLog "logs/111.com-error_log"
    CustomLog "logs/111.com-access_log" combined
    ...

    将日志文件路径后面的common改为combined

  • 测试并重新加载

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

可以通过cat、tail等命令查看日志,tail -f可以查看动态的日志。



本文转自 豆渣锅 51CTO博客,原文链接:http://blog.51cto.com/754599082/2052735

相关文章
|
存储 消息中间件 Java
Apache Flink 实践问题之原生TM UI日志问题如何解决
Apache Flink 实践问题之原生TM UI日志问题如何解决
275 1
|
存储 监控 安全
实时记录和查看Apache 日志
Apache 是一个开源、跨平台的 Web 服务器,保护其平台需监控活动和事件。Apache 日志分为访问日志和错误日志,分别记录用户请求和服务器错误信息。EventLog Analyzer 是一款强大的日志查看工具,提供集中收集、分析、实时警报和安全监控功能,帮助管理员识别趋势、检测威胁并确保合规性。通过直观的仪表板和自动化响应,它简化了大规模日志管理,增强了 Apache 服务器的安全性和性能。
491 5
|
监控 安全 Apache
什么是Apache日志?为什么Apache日志分析很重要?
Apache是全球广泛使用的Web服务器软件,支持超过30%的活跃网站。它通过接收和处理HTTP请求,与后端服务器通信,返回响应并记录日志,确保网页请求的快速准确处理。Apache日志分为访问日志和错误日志,对提升用户体验、保障安全及优化性能至关重要。EventLog Analyzer等工具可有效管理和分析这些日志,增强Web服务的安全性和可靠性。
661 9
|
监控 安全 BI
优化 Apache 日志记录的 5 个最佳实践
Apache 日志记录对于维护系统运行状况和网络安全至关重要,其核心包括访问日志与错误日志的管理。通过制定合理的日志策略,如选择合适的日志格式、利用条件日志减少冗余、优化日志级别、使用取证模块提升安全性及实施日志轮换,可有效提高日志可用性并降低系统负担。此外,借助 Eventlog Analyzer 等专业工具,能够实现日志的高效收集、可视化分析与威胁检测,从而精准定位安全隐患、评估服务器性能,并满足合规需求,为强化网络安全提供有力支持。
382 0
优化 Apache 日志记录的 5 个最佳实践
|
人工智能 运维 监控
Aipy实战:分析apache2日志中的网站攻击痕迹
Apache2日志系统灵活且信息全面,但安全分析、实时分析和合规性审计存在较高技术门槛。为降低难度,可借助AI工具如aipy高效分析日志,快速发现攻击痕迹并提供反制措施。通过结合AI与学习技术知识,新手运维人员能更轻松掌握复杂日志分析任务,提升工作效率与技能水平。
|
存储 运维 监控
金融场景 PB 级大规模日志平台:中信银行信用卡中心从 Elasticsearch 到 Apache Doris 的先进实践
中信银行信用卡中心每日新增日志数据 140 亿条(80TB),全量归档日志量超 40PB,早期基于 Elasticsearch 构建的日志云平台,面临存储成本高、实时写入性能差、文本检索慢以及日志分析能力不足等问题。因此使用 Apache Doris 替换 Elasticsearch,实现资源投入降低 50%、查询速度提升 2~4 倍,同时显著提高了运维效率。
1295 3
金融场景 PB 级大规模日志平台:中信银行信用卡中心从 Elasticsearch 到 Apache Doris 的先进实践
|
存储 监控 安全
实时记录和查看Apache 日志
Apache 是一个开源、跨平台的Web服务器,保护其安全依赖于监控活动和分析访问日志。日志分为访问日志和错误日志,前者记录用户请求及响应情况,后者记录服务器错误信息。EventLog Analyzer等工具可集中收集、分析日志,提供直观的仪表板和实时警报,帮助识别趋势、异常和威胁,确保服务器稳定性和安全性,并支持合规管理。
423 5
|
存储 消息中间件 人工智能
AI大模型独角兽 MiniMax 基于阿里云数据库 SelectDB 版内核 Apache Doris 升级日志系统,PB 数据秒级查询响应
早期 MiniMax 基于 Grafana Loki 构建了日志系统,在资源消耗、写入性能及系统稳定性上都面临巨大的挑战。为此 MiniMax 开始寻找全新的日志系统方案,并基于阿里云数据库 SelectDB 版内核 Apache Doris 升级了日志系统,新系统已接入 MiniMax 内部所有业务线日志数据,数据规模为 PB 级, 整体可用性达到 99.9% 以上,10 亿级日志数据的检索速度可实现秒级响应。
1312 14
AI大模型独角兽 MiniMax 基于阿里云数据库 SelectDB 版内核 Apache Doris 升级日志系统,PB 数据秒级查询响应
|
存储 Ubuntu Apache
如何在 Ubuntu VPS 上配置 Apache 的日志记录和日志轮转
如何在 Ubuntu VPS 上配置 Apache 的日志记录和日志轮转
302 6
|
Ubuntu Linux 测试技术
在Linux中,已知 apache 服务的访问日志按天记录在服务器本地目录/app/logs 下,由于磁盘空间紧张现在要求只能保留最近7天的访问日志,请问如何解决?
在Linux中,已知 apache 服务的访问日志按天记录在服务器本地目录/app/logs 下,由于磁盘空间紧张现在要求只能保留最近7天的访问日志,请问如何解决?

推荐镜像

更多