Nginx在Windows上和Linux上(Docker启动)分别配置基本身份认证示例
场景
Nginx代理的资源或网站等,url直接暴露有风险,需要添加身份认证,即输入用户名密码后才能成功访问。
注:
博客:
霸道流氓气质-CSDN博客
实现
Windows上配置Nginx实现基本身份认证
修改nginx的配置文件
添加基本身份认证配置设置auth_basic以及认证用户民密码文件的位置auth_basic_user_file
server {
listen 250;
server_name 127.0.0.1;
location / {
root D:/test/;
# 基本验证
auth_basic "nginx basic auth";
auth_basic_user_file D:/test/htpasswd;
try_files $uri $uri/ /index.html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
这里在D盘test目录下新建文件,新建一个txt文件,修改其内容如下
badao:123456
左边是用户名,右边是密码。多个用户名密码换行继续加
然后修改文件名为htpasswd,并且去掉后缀名,即在d盘test下新建一个htpasswd文件。
启动nginx并访问250端口测试
Linux上Docker启动Nginx配置基本身份认证示例
在linux上的流程类似,只不过密码不能使用明文,需要生成一个加密的密码。
加密密码生成方式:
安装工具httpd
yum install httpd-tools -y
生成密码
htpasswd -nbm badao 123456
回车会输出加密后的密码
复制此密码并生成htpasswd文件
这里在/home/test/nginx/html目录下
touch htpasswd
然后编辑该文件,将上面生成的用户名密码复制进文件。
将nginx的配置文件上传至/home/test/nginx目录下并修改其内容
location / {
root /usr/share/nginx/html;
# 基本验证
auth_basic "nginx basic auth";
auth_basic_user_file /usr/share/nginx/html/htpasswd;
index index.html index.htm;
}
这里注意html首页的路径以及用户名密码文件的路径
然后使用docker启动nginx
docker run --name nginx-auth-test -p 250:250 -v /home/test/nginx/nginx.conf:/etc/nginx/nginx.conf -v /home/test/nginx/html:/usr/share/nginx/html -d nginx
启动成功后访问250进行验证
如果用curl进行请求时,需要携带用户名密码可以使用如下格式
curl --user badao:123456 http://127.0.0.1:250/