=================写在前面的话==================
场景描述:有时候我们需要查看apache的运行状态,只需要开启apache的status功能就可以实现,但是status页面不应该是所有人都能够访问的,所以我们还需要对status页面做认证管理。
==================现在开干====================
思路:开启status功能(加载mod_status.so模块>加载status模块的配置文件>开启详细状态功能)>配置页面认证(使用htpasswd命令生成用户信息加密文件>配置status使用加密文件进行认证)
一:开启status功能
1.加载mod_status.so模块
①编辑httpd.conf文件
vim /usr/local/apache/conf/httpd.conf
②查看行 LoadModuls status_module modules/mod_status.so 前是否有注释符号#,如果有则去掉,如果没有则直接进行下一步操作。
2.加载status模块的配置文件
①编辑httpd.conf文件
vim /usr/local/apache/conf/httpd.conf
②查看行 Include conf/extra/httpd-info.conf 前是否有注释符号#,如果有则去掉,如果没有则直接进行下一步操作。
3.开启详细状态功能
①编辑httpd-info.conf文件
vim /usr/local/apache/conf/extra/httpd-info.conf
②查看行 ExtendedStatus On 前是否有注释符号#,如果有则去掉,如果没有则直接进行下一步操作。
===设置完这些,重启apache服务后我们就可以通过域名/server-status查看apache允许状态了,接下来我们来配置针对status页面做认证====
小技巧:访问server-status页面路径后面加上?refresh=3可以使页面自动3秒刷新一次,这里的3指的是秒,你可以根据自己的需求更改这个时间的周期
二:配置status页面认证
1:使用htpasswd工具生成加密文件
htpasswd说明:htpasswd是apache自带的用户和密码加密文件生成工具,如果没有该工具也可百度搜索在线生成htpasswd文件的网站。如果apache是通过RPM的方式安装的话,该命令存放在/usr/bin/目录下,如果apache是源码方式安装的话,该命令存放在apache安装目录的bin目录下。
①使用htpasswd工具生成一个位于/usr/local/apache/conf目录下名为.htpasswd的文件,该文件中包含用户名为renzheng,密码为renzheng123的用户。
/usr/local/apache/bin/htpasswd -cbm /usr/local/apache/conf/.htpasswd renzheng renzheng123
htpasswd命令选项介绍:
-c 创建一个加密文件 -n 不更新加密文件,只将apache htpasswd命令加密后的用户名密码显示在屏幕上 -m 默认apache htpassswd命令采用MD5算法对密码进行加密 -d apache htpassswd命令采用CRYPT算法对密码进行加密 -p apache htpassswd命令不对密码进行进行加密,即明文密码 -s apache htpassswd命令采用SHA算法对密码进行加密 -b 在apache htpassswd命令行中一并输入用户名和密码而不是根据提示输入密码 -D 删除指定的用户
②查看.htpasswd文件是否生成并包含用户名为renzheng且密码经过加密的内容。
cat /usr/local/apache/conf/.htpaawd
2.配置status中进行认证
①:编辑status配置文件
vim /usr/local/apache/conf/extra/httpd-info.conf
②:用如下代码替换源文件中的代码
<locationmatch "/server-status"> AuthType Basic AuthName "Please Insed Password" AuthUserFile "/usr/local/apache/conf/.htpasswd" Require valid-user </locationmatch>
说明:Require valid-user这个选项是所有.htpasswd文件中的用户都能够用来进行认证,如果不想所有用户指向指定个别用户,可以用命令 Require user 用户1 用户2 用户3