Nginx配置网页认证访问
需求:访问网站或者网站的某个页面时,需输入认证信息即用户名和密码才能访问。
环境:centos7&8
工具:Nginx httpd-tools
此需求需要用到Nginx的ngx_http_auth_basic_module模块,此模块在安装Nginx时默认已安装,无需额外添加。
点此查看Nginx官网说明文档
安装Nginx,已安装略过,点此查看Nginx安装教程
安装httpd-tools,已安装略过,用于创建密码文件。
yum -y install httpd-tools
创建密码文件
使用命令:htpasswd
htpasswd参数说明
-b 命令行中一并输入用户名和密码而不是根据提示输入密码,可以看见明文,不需要交互
-c 创建passwdfile.如果passwdfile 已经存在,那么它会重新写入并删去原有内容.
-d 使用CRYPT加密(默认)
-D 删除指定的用户
-m 使用MD5加密(默认)
-n 不更新passwordfile,直接显示密码
-p 使用普通文本格式的密码
-s 使用SHA加密
命令格式组成:
htpasswd 参数选项 密码文件位置 用户名 密码(存在参数-b时才需要同时输入密码)
需要注意的是
1、参数-c是创建密码文件,若原先有同名密码文件将会被覆盖掉
2、若原先有同名密码文件,去掉-c选项,即可在文件内添加新用户
3、参数-b是同时输入用户名和密码,如果不加参数-b,创建用户时,只需输入用户名回车即可,会提示你输入密码
4、创建密码文件时用绝对路径,若未指定绝对路径,则在当前目录下创建
5、修改密码,重新添加需要修改密码的用户即可,密码信息会覆盖
在目录/home/创建密码文件user_passwd并添加用户test,同时设置用户密码为:test123456
htpasswd -cb /home/user_passwd test test123456
添加新用户demo,同时设置密码为demo123456
htpasswd -b /home/user_passwd demo demo123456
修改test用户密码为:123456
htpasswd -b /home/user_passwd test 123456
删除用户demo
htpasswd -D /home/user_passwd demo
Nginx配置
在Nginx配置文件中加入以下两行
注:整个网站验证,则加在server段,网站的某个网页验证,则加在location段
auth_basic "登录认证";
auth_basic_user_file /home/user_passwd;
全站验证,配置如:
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name localhost;
auth_basic "登录认证";
auth_basic_user_file /home/user_passwd;
location / {
root html;
index index.html index.htm;
}
location /gp {
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1:8888/gp;
proxy_http_version 1.1;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
单页面验证配置如下
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name localhost;
location / {
root html;
index index.html index.htm;
}
location /gp {
auth_basic "登录认证";
auth_basic_user_file /home/user_passwd;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1:8888/gp;
proxy_http_version 1.1;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}