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段了
}