nginx 防攻击 安全设置 实例
Nginx 是一款高性能的 HTTP 和反向代理服务器,它也提供了一些内置的功能来增强安全性和抵御网络攻击。以下是一些 Nginx 的安全设置实例:
1. 限制请求速率(防止DDoS攻击)
使用 limit_req 模块来限制客户端的请求速率:
http {
limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;
server {
location / {
limit_req zone=one burst=5 nodelay;
}
}
}
2. 限制并发连接数
使用 limit_conn 模块来限制特定 IP 的并发连接数:
http {
limit_conn_zone $binary_remote_addr zone=addr:10m;
server {
location / {
limit_conn addr 10;
}
}
}
3. 防止点击劫持
添加 X-Frame-Options 头部来防止点击劫持攻击:
server {
location / {
add_header X-Frame-Options SAMEORIGIN;
}
}
4. 防止 MIME 类型混淆
添加 X-Content-Type-Options 头部来防止 MIME 类型混淆攻击:
nginx
server {
location / {
add_header X-Content-Type-Options nosniff;
}
}
5. 防止 XSS 攻击
添加 X-XSS-Protection 头部来启用浏览器的 XSS 过滤:
server {
location / {
add_header X-XSS-Protection "1; mode=block";
}
}
6. 禁止代理访问
如果你不希望搜索引擎或其他代理访问你的网站,可以添加以下配置:
server {
location / {
allow 127.0.0.1; # 只允许本地访问
deny all;
}
}
7. 使用 SSL/TLS
启用 SSL/TLS 来保护数据传输的安全:
server {
listen 443 ssl;
server_name example.com;
ssl_certificate /path/to/cert.pem;
ssl_certificate_key /path/to/key.pem;
location / {
# 处理 HTTPS 请求
}
}
8. 防止目录浏览
禁止目录浏览,只允许文件访问:
server {
location / {
autoindex off;
}
}
9. 配置防火墙规则
在 Nginx 前面使用防火墙(如 iptables 或 firewalld)来限制访问:
bash
# 使用 iptables 限制特定 IP 的访问
iptables -A INPUT -p tcp --dport 80 -s 192.168.1.100 -j DROP
10. 配置 HSTS
强制客户端使用 HTTPS 连接:
server {
listen 443 ssl;
server_name example.com;
ssl_certificate /path/to/cert.pem;
ssl_certificate_key /path/to/key.pem;
location / {
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains";
}
}
这些设置可以帮助你提高 Nginx 的安全性,但请记得根据你的具体需求和环境进行调整。安全是一个持续的过程,需要定期更新和维护。