location / { if ($http_user_agent ~ "python|curl|java|wget|httpclient|okhttp") { return 503; } # 正常处理 # ...}
屏蔽文件目录
在Nginx中屏蔽文件目录,我们可以利用location指令和deny指令来实现。比如,常日我们会禁止访问版本掌握的目录.git和.svn,其余,隐蔽文件目录我们也会谢绝访问。
#通用备份和归档文件location ~ "\.(old|orig|original|php#|php~|php_bak|save|swo|aspx?|tpl|sh|bash|bak?|cfg|cgi|dll|exe|git|hg|ini|jsp|log|mdb|out|sql|svn|swp|tar|rdf)$" { deny all;}#谢绝访问 .git 和 .svn 目录location ~ (.git|.svn) { deny all;}#谢绝访问隐蔽文件和目录location ~ /\.(?!well-known\/) { deny all;}
图片防盗链
我们通过利用valid_referers指令来定义合法的引荐网址列表,只有这些网址才能正常地获取到图片。如果要求没有供应或者不属于合法的引荐网址,直接返回404或者重定向到某个页面。
location ~ \.(gif|jpg|png|swf|flv)$ { root html; valid_referers none blocked .nginx.com; if ($invalid_referer) { rewrite ^/ www.nginx.cn; # return 404; }}
防盗图配置
跟上面一样,我们也是通过利用valid_referers指令来定义合法的引荐网址列表,只有这些网址才能正常地获取到图片。但是,如果要求没有供应或者不属于合法的引荐网址,我们返回一张固定的图片,让它获取不到真正的图片。

location ~ \/public\/(css|js|img)\/.\.(js|css|gif|jpg|jpeg|png|bmp|swf) { valid_referers none blocked .jslite.io; if ($invalid_referer) { rewrite ^/ http://wangchujiang.com/piratesp.png; }}
阻挡常见攻击
像base64编码的网址、javascript eval()的网址,常日是攻击来源,我们可以阻挡它,不让它访问。
#base64编码的网址location ~ "(base64_encode)(.)(\()" { deny all;}#javascript eval() urllocation ~ "(eval\()" { deny all;}
使网站不可索引
如果我们不想搜索引擎收录我们的网站,我们可以通过向要求头中添加X-Robots-Tag标签,这个标签会见告搜索引擎爬虫不要索引网站的任何内容。其余,可以配置我们的网站舆图robots.txt返回全部都不许可,这样,搜索引擎爬虫也不会索引我们的网站。
add_header X-Robots-Tag "noindex";location = /robots.txt { return 200 "User-agent: \nDisallow: /\n";}