Nginx的站点目录及文件URL的访问控制
1、根据扩展名限制程序和文件访问:
web2.0时代,绝大多数网站都是以用户为中心的,这些产品有一些共同点,就是不允许用户发布内容到服务器,还允许用户发图片甚至附件上传到服务器上,给用户开启了上传的功能。带来了很大的安全隐患。
下面将利用nginx配置禁止访问上传资源目录下的PHP,SHELL,PERL,PYTHON程序文件,这样就算是用户上传了木马文件也没办法执行
location ~ ^/images/.*\.(php|php5|.sh|.pl|.py)$ { deny all; } location ~ ^/static/.*\.(php|php5|.sh|.pl|.py)$ { deny all; } location ~* ^/data/(attachment|avatar)/.*\.(php|php5)$ { deny all; }
2、禁止访问指定目录下的所有文件和目录:
配置禁止访问指定的单个或多个目录
location ~ ^/(static)/ { deny all; } location ~ ^/static { deny all; }
禁止访问目录并且返回代码404
server { listen 80; server_name www.brian.org; root /opt/nginx/html; index index.html index.htm; access_log logs/brian.log main gzip buffer=128k flush=5s; location /admin/ { return 404; } location /templates/ { return 403; } }
3、限制网站来源的IP访问:
使用ngx_http_access_module限制网站来源IP访问。
范例1:禁止外界访问,但允许某个IP访问该目录
location ~ ^/brian/ { allow 202.111.12.211; deny all; }
范例2:限制及指定IP或IP段访问
location / { deny 192.168.1.1; allow 192.168.1.0/24; allow 10.1.1.0/16; deny all; }
4、配置nginx禁止非法域名解析访问企业网站:
问题:nginx如何防止用户IP访问网站(恶意域名解析,相当于直接使用IP访问网站)
方法1:直接报错,用户体验不好
server { listen 80 default_server; server_name _; return 501; }
方法2:通过301跳转到主页
server { listen 80 default_server; server_name _; rewrite ^(.*) http//:blog.brian.com/$1 permanent; }
朱敬志(brian),成功不是将来才有的,而是从决定去做的那一刻起,持续累积而成。