在Nginx中,可以通过一系列配置实现安全管控,包括防止信息暴露、限制访问、防止DDoS攻击、防止爬虫抓取以及防非法引用。以下是一些建议和配置示例:
-
防止信息暴露:
-
禁止目录索引:防止Nginx在无默认文档时列出目录内容。
location / { autoindex off; # 禁止目录索引 }
-
删除服务器标识:防止泄露Nginx版本等信息。
server_tokens off; # 在http{}块中隐藏服务器版本号
-
-
限制访问:
-
IP白名单或黑名单:
# 黑名单 deny 192.168.1.0/24; # 拒绝来自该IP段的所有请求 allow all; # 允许其他IP访问 # 白名单 allow 192.168.1.0/24; # 允许来自该IP段的所有请求 deny all; # 拒绝其他IP访问
-
限制特定URL的访问:
location /secret { auth_basic "Restricted Area"; auth_basic_user_file /etc/nginx/.htpasswd; # 使用基本认证 }
-
-
防止DDoS攻击:
-
限制请求速率:
limit_req_zone $binary_remote_addr zone=req_limit:10m rate=1r/s; # 创建限速区 location / { limit_req zone=req_limit burst=5; # 每秒1个请求,允许突发5个 }
-
限制并发连接数:
limit_conn_zone $binary_remote_addr zone=conn_limit:10m; # 创建连接数限制区 server { location / { limit_conn conn_limit 10; # 单个IP最大并发连接数为10 } }
-
-
防止爬虫抓取:
- Robots.txt:在服务器根目录下放置robots.txt文件,指示搜索引擎爬虫哪些页面不应被抓取。
- User Agent过滤:
if ($http_user_agent ~* (bot|spider|crawl) ) { return 403; # 如果UA包含bot、spider或crawl等关键字,返回403 Forbidden }
-
防非法引用(防盗链):
- Referer检查:
location ~ \.(jpg|jpeg|png|gif)$ { valid_referers none blocked yourdomain.com *.yourdomain.com; if ($invalid_referer) { return 403; # 如果Referer不在允许范围内,返回403 Forbidden } }
- Referer检查:
以上仅为基本示例,实际部署时需根据具体情况调整和完善配置。同时,全面的安全防护还需要结合防火墙、入侵检测系统等其他安全措施共同实现。