需求
对于一些内部资源静态页面,例如:私有wiki,不想公开到互联网上,但是还是想要能够在互联网上访问,这个时候可以使用Nginx自带的验证功能。
生成认证文件
首先我们要生成认证文件,Nginx的认证配置是采用Basic Auth来认证的,因此我们可以通过htpasswd命令来生成认证配置文件。
$ htpasswd -c /usr/local/nginx/password [username] # 回车后输入密码 示例: $ sudo mkdir /usr/local/nginx $ sudo htpasswd -c /usr/local/nginx/password iric点击复制复制失败已复制
提示
htpasswd
命令集成于 apache2-utils
包中,可以通过如下命令安装:
$ sudo apt install apache2-utils点击复制复制失败已复制
配置Nginx认证
只需要在配置文件的 server
代码块中加上 auth_basic
和 auth_basic_user_file
字段即可。
server { listen 80; server_name localhost; # ... auth_basic "请输入用户和密码"; # 验证时的提示信息 auth_basic_user_file /usr/local/nginx/password; # 认证文件 location / { root /var/www; index index.html index.htm; } # ... } 点击复制复制失败已复制
附录
htpasswd命令用法
删除用户和密码
$ htpasswd -D /usr/local/nginx/password [username]点击复制复制失败已复制
修改用户和密码
$ htpasswd -D /usr/local/nginx/password username $ htpasswd -b /usr/local/nginx/password username pass # -D 删除指定的用户 # -b htpassswd命令行中一并输入用户名和密码而不是根据提示输入密码 # -p htpassswd命令不对密码进行进行加密,即明文密码