GeXiangDong

精通Java、SQL、Spring的拼写,擅长Linux、Windows的开关机

0%

NGINX增加条件访问限制

公司内部开发用的redmine, wiki等服务,计划在公司内网IP访问时可以直接访问,因为偶尔需要在家等远程访问需求,需要开放外网访问,计划在外网访问时增加一个基本认证机制,以限制外部人员获取信息。

首先使用htpasswd创建了一个用户密码文件

htpasswd -c /etc/nginx/.htpasswd developer

如果没有htpasswd命令可以通过 apt-get install apache2-utils 安装。

修改nginx的配置文件,加入以下内容

1
2
3
4
if ($remote_addr ~ "^(192.168.1.|192.168.2.)" ) {
auth_basic "Restricted Content";
auth_basic_user_file /etc/nginx/.htpasswd;
}

测试(nginx -t)会出错:

nginx: [emerg] "auth_basic" directive is not allowed here in /etc/nginx/sites-enabled/default:31

改成

1
2
3
4
5
6
set $realm "Restricted Content";
if ($remote_addr ~ "^(192.168.1.|192.168.2.)" ) {
set $realm "off";
}
auth_basic $realm;
auth_basic_user_file /etc/nginx/.htpasswd;

可解决。