1 背景
项目中的Nginx需要对外暴露一个接口,该接口必须具有一定的安全措施:
- 调用接口必须是认证用户才能调用
- 需要限制调用方的IP地址
2 解决
利用Nginx本身提供的module来实现安全需求:默认情况下,这两个模块都已经编译进去了
- ngx_http_auth_basic_module:Http Basic认证
- ngx_http_access_module:IP地址限制
具体操作步骤如下:
# 1.生成账号和密码(非明文密码,密码应该包括字母大小写、数字和特殊字符)
# 注意:windows下不支持htpasswd方式!
printf "gsp:$(openssl passwd -crypt Test@888888)\n" >> htpasswd
# 2.对特定Location添加Http Basic认证
# 注意auth_basic_user_file的路径配置,如果找不到对应的文件,会报403
# 报403错误时,在error.log中可以定位问题
location /test {
root html/;
# 添加Http Basic认证
auth_basic "Login Required";
auth_basic_user_file /etc/nginx/co