场景
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/