前言-刚刚发布一个demo一直被一个叼毛攻击,不停的扫描端口,弄得接口一访问就是503错误
99元买了一个2核2g的服务器,1元钱买了一个服务器,有个人一直扫描我的端口
安装一个 nginx
dnf install nginx
安装完成后启动nginx服务
# 启动 systemctl start nginx # 设置开机自启动 systemctl enable nginx # 重启 systemctl restart nginx # 查看状态 systemctl status nginx # 停止服务 systemctl stop nginx
打开etc
ginx
ginx.conf文件
server {
listen 80; #监听端口
listen [::]:80;
server_name 192.168.100.10; #服务器地址 域名或者ip
# root /usr/share/nginx/html;
location / {
# 检查请求的 URI 是否包含 "home"(不区分大小写)
if ($request_uri ~* (?i:home)) {
# 将原始 URI 反向代理到内部网站
set $target_uri $request_uri;
proxy_pass http://127.0.0.1:5000;
break; # 跳出 if 语句
}
}
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
error_page 404 /404.html;
location = /404.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
webapi程序program里面改一下
var app = builder.Build();
// Configure the HTTP request pipeline.
//if (app.Environment.IsDevelopment())
//{
// app.UseSwagger();
// app.UseSwaggerUI();
//}
app.UseAuthorization();
app.MapControllers();
app.Use(async (context, next) =>
{
var requestedUrl = context.Request.Path.Value;
if (!IsValidUrl(requestedUrl))
{
if (requestedUrl.Contains(".html"))
{
logger.Debug($"{GetClientIp(context)}--{context.Request.Path}");
}
context.Response.StatusCode = StatusCodes.Status400BadRequest;
await context.Response.WriteAsync(" ");
return;
}
await next();
});
app.Run();
bool IsValidUrl(string url)
{
// 这里可以实现你的URL验证逻辑
// 例如,只允许某些路径
var allowedUrls = new[] {"/home" };
return allowedUrls.Contains(url.ToLower());
}
string GetClientIp(HttpContext context)
{
// 尝试从 X-Forwarded-For 头获取 IP 地址
string ip = context.Request.Headers["X-Forwarded-For"].FirstOrDefault();
if (string.IsNullOrEmpty(ip))
{
// 如果 X-Forwarded-For 头为空,则获取直接连接的 IP 地址
ip = context.Connection.RemoteIpAddress.ToString();
}
return ip;
}
如果前面前面的nginx被功能0进入到这里,直接记录ip
然后在管理后台限制ip访问
把允许改成拒绝,把掉毛的ip加进去
如果还是大量攻击那就上高防服务器,那种服务器打不死
我的服务器99元买的为什么非要打我,日了狗

1