在 Nginx 配置中,可以设置一个默认的 server 块来拒绝所有 IP 直接访问:
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name _;
return 444; # 444 是 Nginx 特有的状态码,表示无响应关闭连接
}
如果需要允许特定 IP 访问,可以这样配置:
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name _;
allow 192.168.1.100; # 允许的IP
deny all; # 拒绝其他所有
return 403; # 对于不允许的返回403
}
server {
listen 80;
server_name yourdomain.com www.yourdomain.com; # 只允许这些域名
# 其他配置...
}
server {
listen 80 default_server;
server_name _;
return 444;
}
server {
listen 80;
if ($host !~* ^(yourdomain.com|www.yourdomain.com)$ ) {
return 444;
}
# 其他配置...
}
对于 HTTPS 站点,需要相应的 SSL 配置:
server {
listen 443 ssl default_server;
ssl_certificate /path/to/cert.pem;
ssl_certificate_key /path/to/key.pem;
return 444;
}
server {
listen 443 ssl;
server_name yourdomain.com www.yourdomain.com;
ssl_certificate /path/to/cert.pem;
ssl_certificate_key /path/to/key.pem;
# 其他SSL和站点配置...
}
nginx -s reload
以上配置可以有效防止通过 IP 或非法域名访问您的 Nginx 服务器。