location / {
allow 192.168.1.1; # 允许单个IP
allow 192.168.1.0/24; # 允许整个子网
deny all; # 拒绝其他所有IP
}
location /admin {
if ($http_x_forwarded_for != "192.168.1.100") {
return 403;
}
}
# 限制连接数
limit_conn_zone $binary_remote_addr zone=addr:10m;
server {
limit_conn addr 10; # 每个IP最多10个连接
}
# 定义限制区域
limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s;
server {
location / {
limit_req zone=one burst=20 nodelay;
}
}
map $http_user_agent $blocked_ua {
default 0;
"~*bot" 1;
"~*spider" 1;
"~*scan" 1;
}
server {
if ($blocked_ua) {
return 403;
}
}
server_tokens off;
add_header X-Frame-Options "SAMEORIGIN";
add_header X-XSS-Protection "1; mode=block";
add_header Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline'";
location / {
if ($request_method !~ ^(GET|HEAD|POST)$ ) {
return 405;
}
}
geo $blocked_ip {
default 0;
192.168.1.100 1; # 黑名单IP
10.0.0.0/8 1; # 黑名单子网
}
server {
if ($blocked_ip) {
return 403;
}
}
nginx -t
测试语法通过以上配置,您可以显著提高Nginx服务器的安全性,有效控制IP访问并防范常见网络攻击。