Nginx访问控制

1. 用户认证

用户认证用来控制不想让其它用户访问的地址,在虚拟主机配置文件中这样定义:

server
{
    listen 80;
    server_name example.com;
    index index.html index.htm index.php;
    root /data/www/example;

    location  /{
        auth_basic              "Auth";
        auth_basic_user_file   /usr/local/nginx/conf/htpasswd;
    }
}

然后使用Apache的密码工具生成用户密码文件:

htpasswd -c /usr/local/nginx/conf/htpasswd username

针对目录可以是这样配置:

server
{
……省略一些配置……

    location  /directory/{
        auth_basic              "Auth";
        auth_basic_user_file   /usr/local/nginx/conf/htpasswd;
    }
}

2. 目录控制

根据扩展名限制程序和文件访问:

    location ~ ^/images/.*\.(php|php5|.sh|.pl|.py)$ {
        deny all;
    }
    location ~ ^/static/.*\.(php|pph5|.sh|.pl|.py)$ {
        deny all;
    }

说明:用location标签匹配不被解析的文件,然后关掉访问权限。

禁止访问指定目录下所有的文件和目录:

单目录

    #写法一
    location ~ ^/(static)/ {
        deny all;
    }
    #写法二
    location ~ ^/static {
        deny all'
    }

多目录

location ~ ^/(static|image) {
    deny all;
}

禁止访问指定目录,如果访问就返回404

    location /admin/ {
        return 404;
    }
    location /templates/ {
        return 403;
    }

3. 限制来源IP**

应用场景:网站后台,只允许个别IP或者网段访问

    location ~ ^/oldboy/{
        allow 192.168.0.20;
        deny all;
    }

    location ~ ^/admin/ {
        deny 192.168.0.1;
        allow 192.168.0.0/24;
        allow 10.1.1.0/16;
        deny all;          #一旦deny all;下面就不能再接IP或者IP段了
    }

标签: web, 优化

添加新评论