如果 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 服务器配置简单访问谁的方法。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注