首页 > Nginx > Nginx 对用户IP单独限制

Nginx 对用户IP单独限制

2013年2月20日 发表评论 阅读评论

相关说明:

Nginx对URL进行IP限制是非常简单的, 但是对单独用户进行IP限制稍微麻烦点, 本文介绍Nginx使用GEO模块进行用的IP单独限制.

操作系统: Linux CentOS
相关软件: Nginx

操作过程:

首先我们来看简单的IP限制:

location / {
        deny 172.16.0.0/16;
        allow all;
}

这个只是禁止172.16这个网段的的访问, 允许其他的网段访问.

接下来我们需要禁止对siteboll用户进行限制(需要先配置auth_basic认证):

if ($remote_user = siteboll) {
        set $web_user 1;
}
if ($remote_addr ~ ^172\.16\..+) {
        set $web_user "${web_user}2";
}
if ( $web_user = 12) {
        return 403;
}

这个是禁止siteboll用户对172.16这个网络的访问限制.

如果需要禁止多个网段或者主机, 那么这样的方式有点麻烦, 我们换个方式, 使用nginx的geo模块来实现:
http配置区域加入以下配置:

geo $geo {
        default               default;
        172.16.0.0/16         serverip;
        10.0.0.0/8            serverip;
}

在server配置区域加入以下配置

if ($remote_user = siteboll) {
        set $web_user 1;
}
if ( $geo = serverip ) {
        set $web_user "${web_user}2";
}
if ( $web_user = 12) {
        return 403;
}

这个是对siteboll账户禁止172.16和10.网段的网络. 如需要配置多个IP直接在geo配置区域里面添加IP即可, 非常方便的.

相关链接:

nginx: http://nginx.org



除非注明,波尔博客的文章均为原创, 转载请注明作者和出处, 谢谢合作.
博客网址: 波尔 Boll
本文链接地址: https://www.boll.me/archives/539



分类: 标签:
  1. 本文目前尚无任何评论.
  1. 本文目前尚无任何 trackbacks 和 pingbacks.