Nginx系列(五)——认证
(一)Nginx基本认证
当我们不想将Nginx上的内容对外开放时,可以考虑添加基本认证.也就是访问该Nginx时,需要输入帐号密码,提高其安全性
yum install httpd-tools openssl -y #安装httpd-tools(因为我们需要用到该包下的htpasswd生成密码)
htpasswd -c /usr/local/nginx/conf/conf.d/passwd admin #使用-c指定密码文件路径,admin为认证用户名,我配置的秘密也是admin
Nginx配置文件如下
location / {
auth_basic "用户认证"; #访问时弹出一个内容为"用户认证的"的验证窗口
auth_basic_user_file /usr/local/nginx/conf/conf.d/passwd; #生成密码时指定的密码文件路径和文件名
}
最后重启nginx即可,重启后访问nginx就会要求输入帐号秘密了
(二)子请求认证
nginx作为一个非常用到的反向代理服务器,那么,当我们的后台服务器有一部分内容包含敏感信息时,我们就可以考虑配置子请求认证.这里我是通过另一台nginx做为认证服务器
我们可以直接使用本文(一)中配置的nginx(ip为192.168.2.129)作为我们的认证服务器
接下来,我们来配置一台nginx(ip为192.168.2.130),其中的/private请求会到本文(一)中的nginx进行认证.
location /private/ { #在nginx的html目录下新建该目录,同时再在private目录下新建一个页面文件
auth_request /auth; #带一个internal URL参数,也就是下文的location = /auth.也就意味这/private下的请求会走/auth
auth_request_set $auth_status $upstream_status; #经过(一)中的nginx认证,会返回一个200之类的认证码说明认证成功,可以正常访问/private下的内容.当认证失败时,返回403等返回码,nginx会直接提示认证失败
}
location = /auth {
internal;
proxy_pass http://192.168.2.129;
proxy_pass_request_body off;
proxy_set_header Content-Length "";
proxy_set_header X-Original-URI $request_uri;
}
做完以上配置后,重启nginx,访问192.168.2.130/private会提示输入192.168.2.129配置的帐号秘密admin/admin,然后我们就能看到130的private下新建的那个网页文件内容
浙公网安备 33010602011771号