在Nginx中,如果你想要屏蔽某些IP地址,可以通過配置ngx_http_access_module模塊來實現。以下是一些常見的方法:
deny和allow指令編輯Nginx配置文件:
打開你的Nginx配置文件,通常位于/etc/nginx/nginx.conf或/etc/nginx/sites-available/your-site。
添加訪問控制規則:
在server或location塊中添加deny和allow指令來控制IP訪問。
server {
listen 80;
server_name example.com;
# 屏蔽特定IP地址
deny 192.168.1.1;
deny 192.168.1.2;
# 允許所有其他IP地址
allow all;
location / {
root /var/www/html;
index index.html index.htm;
}
}
重新加載Nginx配置: 保存配置文件并重新加載Nginx以應用更改。
sudo nginx -s reload
geo模塊如果你有多個IP地址需要屏蔽,可以使用geo模塊來簡化配置。
編輯Nginx配置文件: 打開你的Nginx配置文件。
定義IP地址范圍:
使用geo模塊定義需要屏蔽的IP地址范圍。
http {
geo $block_ip {
default 0;
192.168.1.1 1;
192.168.1.2 1;
}
server {
listen 80;
server_name example.com;
# 屏蔽特定IP地址
if ($block_ip) {
return 403 "Forbidden";
}
location / {
root /var/www/html;
index index.html index.htm;
}
}
}
重新加載Nginx配置: 保存配置文件并重新加載Nginx以應用更改。
sudo nginx -s reload
fail2banfail2ban是一個更高級的工具,可以自動屏蔽惡意IP地址。
安裝fail2ban:
在大多數Linux發行版上,可以使用包管理器安裝fail2ban。
sudo apt-get install fail2ban # Debian/Ubuntu
sudo yum install fail2ban # CentOS/RHEL
配置fail2ban:
編輯fail2ban的配置文件,通常位于/etc/fail2ban/jail.local或/etc/fail2ban/jail.d/*.conf。
[DEFAULT]
bantime = 600
findtime = 600
maxretry = 3
[nginx-badbots]
enabled = true
filter = nginx-badbots
action = iptables-multiport[name=BadBots, port="http,https", protocol=tcp]
logpath = /var/log/nginx/access.log
創建過濾器:
創建一個過濾器文件來匹配惡意IP地址,通常位于/etc/fail2ban/filter.d/nginx-badbots.conf。
[Definition]
failregex = ^<HOST> -.*"(GET|POST|HEAD).*HTTP.*"
ignoreregex =
重啟fail2ban:
保存配置文件并重啟fail2ban以應用更改。
sudo systemctl restart fail2ban
通過以上方法,你可以有效地屏蔽Nginx日志中的特定IP地址。選擇適合你需求的方法進行配置即可。