nginx安全规则分享
常用 Nginx 安全规则
以下是一些常用的 Nginx 安全规则,可根据实际需求添加到配置文件中。
1. 敏感词请求拦截
- 规则:当请求 URL 中包含敏感词时,跳转下载 10GB 文件。
代码:
if ($request_uri ~* "(\.gz)|(")|(\.tar)|(admin)|(\.zip)|(\.sql)|(\.asp)|(\.rar)|(function)|($_GET)|(eval)|(\?php)|(config)|(\')|(\.bak)") { return 301 http://lg-dene.fdcservers.net/10GBtest.zip; }
2. 禁止下载特定文件类型
- 规则:禁止下载
.zip
、.rar
、.sql
等文件。 代码:
location ~ \.(zip|rar|sql|bak|gz|7z)$ { return 444; }
3. 特定关键词跳转
- 规则:当 URL 中包含
test=
时,跳转到公安网。 代码:
if ($request_uri ~* test=) { return 301 https://www.mps.gov.cn; }
4. 防止爬虫访问
- 规则:拦截常见的恶意爬虫。
代码:
if ($http_user_agent ~* (SemrushBot|python|MJ12bot|AhrefsBot|hubspot|opensiteexplorer|leiki|webmeup)) { return 444; }
5. 禁止特定目录执行脚本
- 规则:禁止
uploads
、templets
、data
等目录执行 PHP 脚本。 代码:
location ~* ^/(uploads|templets|data)/.*.(php|php5)$ { return 444; }
6. 屏蔽非常见蜘蛛爬虫
- 规则:屏蔽非常见的蜘蛛爬虫。
代码:
if ($http_user_agent ~* (SemrushBot|python|MJ12bot|AhrefsBot|hubspot|opensiteexplorer|leiki|webmeup)) { return 444; }
7. 禁止爬虫返回 404
- 规则:对特定爬虫返回 404 错误。
代码:
if ($http_user_agent ~* "qihoobot|Censys|Baiduspider|Googlebot|Googlebot-Mobile|Googlebot-Image|Mediapartners-Google|Adsbot-Google|Feedfetcher-Google|Yahoo! Slurp|Yahoo! Slurp China|YoudaoBot|Sosospider|Sogou spider|Sogou web spider|MSNBot|ia_archiver|Tomato Bot|FeedDemon|JikeSpider|Indy Library|Alexa Toolbar|AskTbFXTV|AhrefsBot|CrawlDaddy|CoolpadWebkit|Java|Feedly|UniversalFeedParser|ApacheBench|Microsoft URL Control|Swiftbot|ZmEu|oBot|jaunty|Python-urllib|lightDeckReports Bot|YYSpider|DigExt|YisouSpider|Scrapy|HttpClient|MJ12bot|heritrix|EasouSpider|LinkpadBot|Ezooms|^$") { return 404; }
8. 限制域名访问
- 规则:仅允许指定域名访问,其他域名返回 403。
代码:
if ($host != 'XX.XX.XX') { return 403; }
9. 限制 IP 访问并添加密码验证
- 规则:仅允许特定 IP 访问,并启用 HTTP 认证。
代码:
root /opt/hostloc/www; allow xx.xx.xx.xx; allow 2xx.xx.x.xx; deny all; auth_basic "test"; auth_basic_user_file htpasswd;
10. 禁止访问多个目录
- 规则:禁止访问
cron
和templates
目录。 代码:
location ~ ^/(cron|templates)/ { deny all; break; }
11. 隐藏 Nginx 版本号
- 规则:隐藏 Nginx 版本号,增强安全性。
代码:
http { ... server_tokens off; ... }
12. 禁止非浏览器访问
- 规则:禁止空 User-Agent 的请求。
代码:
if ($http_user_agent ~ ^$) { return 412; }
提示:修改 Nginx 配置文件后,请使用 nginx -t
测试配置是否正确,然后重启 Nginx 服务使配置生效。