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; }