如果 Web 网站希望经过简单认证才可以访问,而不需要网站本身进行相关设置,这是否可以实现呢。答案当然是肯定的,常用的 Web 服务器都可以实现简单的访问认证,只有认证通过(也就是输入的用户密码正确),才将网站响应返回给浏览器,从而实现网站的访问控制。
本文将以常用的 Web 服务器 Apache 和 Nginx 分别举例,讲解如何配置 Web 服务器简单认证。
1] 系统环境
- 操作系统:CentOS 8.0
- 主机名:webserver
- IP 地址:172.16.200.1
- Web 服务器:Apache / Nginx
2] 安装 Web 服务器和认证工具
安装 Apache 服务器,使用如下命令:
# yum install httpd
安装 Naginx 服务器,首先创建官方软件库文件”/etc/yum.repos.d/nginx.repo”,内容如下:
[nginx-stable] name=nginx stable repo baseurl=http://nginx.org/packages/centos/$releasever/$basearch/ gpgcheck=1 enabled=1 gpgkey=https://nginx.org/keys/nginx_signing.key module_hotfixes=true [nginx-mainline] name=nginx mainline repo baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/ gpgcheck=1 enabled=0 gpgkey=https://nginx.org/keys/nginx_signing.key module_hotfixes=true
然后通过如下命令安装:
# yum install nginx
Web 服务器安装成功后,使用如下命令安装认证工具,用于生成本机认证的用户名及密码:
# yum install httpd-tools
3] 创建本地认证用户及密码
本地简单认证工具 httpd-tools 软件包安装成功后,就可以使用其中的 htpasswd 工具来生成 Web 服务器本机认证的用户名和密码,命令如下:
# htpasswd -c /usr/share/htpasswd/.htpasswd admin
通过此命令,就创建了一个用户名为”admin”的密码文件”/usr/share/htpasswd/.htpasswd”,该文件可以用于简单密码认证。而文件内容保存的是用户名及加密码的密码。
图.1 使用htpasswd 命令创建认证密码文件
4] Apache 服务器配置本机简单认证
修改 Apache 的默认配置文件”/etc/httpd/conf/httpd.conf”,将如下内容添加至该配置文件,用于进行本机简单验证示例。注意示例直接对默认根目录进行了认证,对于其它虚拟目录认证配置类似:
### Apache Authentication ### <VirtualHost *:80> ServerAdmin webmaster@itsmarttricks.com DocumentRoot /var/www/html ServerName itsmarttricks.com ErrorLog logs/www.google.com-error_log CustomLog logs/itsmarttricks.com-access_log common <Directory "/var/www/html"> AuthType Basic AuthName "Authentication Required" AuthUserFile /usr/share/htpasswd/.htpasswd Require valid-user </Directory> </VirtualHost> ### Apache Authentication ###
使用浏览器访问 Web 网站”http://172.16.200.1″,首先会出现认证窗口,要求输入用户名和密码:
图.2 简单认证窗口
用户名密码正确后,就会得到对应的 Web 页面,否则会提示认证信息失败,不能显示网站内容。
5] Nginx 服务器配置本机简单认证
Nginx 默认网站配置文件为”/etc/nginx/conf.d/default.conf”,在配置文件”server”配置块中加入如下内容,就启用了本机简单认证:
auth_basic "Authentication Required"; auth_basic_user_file /usr/share/htpasswd/.htpasswd;
同样,打开浏览器访问”http://172.16.200.1″,就会见到登录认证界面,认证通不过的话,会返回如下页面,提示认证没有通过:
图.3 Nginx 返回认证未通过页面
以上就是关于常用 Web 服务器配置简单访问谁的方法。