nginx 屏蔽访问目标

如果你希望 禁止某些路由地址,例如日志中出现的 /news/xxxxxxx 或类似的无效路由,可以通过在 Nginx 配置中设置规则来阻止这些请求。以下是几个常见的解决方案。

1. 通过 Nginx 配置文件屏蔽特定路径

可以通过 location 配置指令来匹配并禁止访问特定的 URL 路径。根据你提供的日志,假设你希望阻止访问 /news/ 路径中的特定内容,可以使用以下方法:

示例 1:禁止访问 /news/ 路径下的所有内容
server {
    listen 80;
    server_name your-domain.com;

    # 禁止访问所有 /news/ 路径的页面
    location ~ ^/news/ {
        return 403;  # 返回 HTTP 403 禁止访问
    }

    # 其他配置...
}
示例 2:禁止访问 /news/ 路径下的特定页面

如果你只想阻止特定的 URL 路径(例如 /news/20170531/4029071),可以使用正则表达式:

server {
    listen 80;
    server_name your-domain.com;

    # 禁止访问特定的 /news 路径
    location ~ ^/news/20170531/4029071$ {
        return 403;  # 返回 HTTP 403 禁止访问
    }

    # 其他配置...
}

2. 通过 Nginx 配置文件阻止某些请求方法

根据你的日志,有些请求是 HEAD 请求。你可以选择禁止这些请求方法(例如 HEAD),阻止访问某些类型的请求。

server {
    listen 80;
    server_name your-domain.com;

    # 禁止所有 HEAD 请求
    if ($request_method = "HEAD") {
        return 403;  # 返回 HTTP 403 禁止访问
    }

    # 其他配置...
}

3. 通过 User-Agent 屏蔽爬虫

在日志中,访问来自于一些爬虫(如 bingbot)。你可以屏蔽特定的 User-Agent(例如 bingbot)。

server {
    listen 80;
    server_name your-domain.com;

    # 屏蔽特定的 User-Agent (如 bingbot)
    if ($http_user_agent ~* "bingbot") {
        return 403;  # 返回 HTTP 403 禁止访问
    }

    # 其他配置...
}

4. 根据 Referer 屏蔽请求

你也可以根据 Referer 请求头来阻止来自特定来源的请求。假设某些请求来自非法或不需要的来源,可以通过 Referer 来过滤。

server {
    listen 80;
    server_name your-domain.com;

    # 屏蔽某些 Referer 来源
    if ($http_referer ~* "example.com") {
        return 403;  # 返回 HTTP 403 禁止访问
    }

    # 其他配置...
}

5. 限流防止恶意请求

你还可以使用 Nginx 限制某个 IP 或路径的访问频率,减少恶意请求。

http {
    limit_req_zone $binary_remote_addr zone=req_limit_per_ip:10m rate=1r/s;

    server {
        listen 80;
        server_name your-domain.com;

        # 限制特定 IP 的访问频率
        limit_req zone=req_limit_per_ip burst=5 nodelay;

        # 其他配置...
    }
}

如果你只需要屏蔽掉 /news/ 路径下超过 3 层的 URL(比如 /news/4058483/4058476/4058413),可以通过 Nginx 配置中的正则表达式来匹配并屏蔽这样的请求。

配置方法:

你可以使用 Nginx 的 location 配置,通过正则表达式匹配 /news/ 路径下超过 3 层的 URL。

示例配置:
server {
    listen 80;
    server_name your-domain.com;

    # 屏蔽 /news/ 路径下超过 3 层的 URL
    location ~ ^/news/[^/]+/[^/]+/[^/]+/ {
        return 403;  # 返回 HTTP 403 禁止访问
    }

    # 其他配置...
}

解释:

  • location ~ ^/news/[^/]+/[^/]+/[^/]+/:
    • ^/news/:表示匹配所有以 /news/ 开头的路径。
    • [^/]+:表示匹配一个由非斜杠 (/) 组成的部分(即一段路径)。[^/] 表示匹配任何不是 / 的字符,+ 表示匹配一个或多个这样的字符。
    • /[^/]+/[^/]+/:此正则表达式匹配路径中连续的三段(即 /news/xxx/xxx/xxx/,其中 xxx 是任意不包含斜杠的字符)。
    • 如果 URL 的层级超过三层(例如 /news/4058483/4058476/4058413),该正则表达式将匹配并阻止访问。

结果:

此配置会 阻止 所有路径为 /news/ 后面跟 超过 3 层路径 的 URL 请求,并返回 HTTP 403(禁止访问)。

在 Nginx 中,限制指定 IP 或 IP 段的访问可以通过 allowdeny 指令来实现。你可以指定允许或拒绝访问的 IP 地址或 IP 范围。

1. 限制单个 IP 地址

要限制某个特定的 IP 地址(比如 192.168.1.100)访问,可以使用 deny 指令:

server {
    listen 80;
    server_name your-domain.com;

    # 限制特定 IP 地址的访问
    deny 192.168.1.100;  # 拒绝此 IP 的访问
    allow all;  # 允许其他 IP 访问

    # 其他配置...
}

2. 限制 IP 段(子网)

你也可以限制一个 IP 段的访问(例如,限制 192.168.1.0/24 段的访问)。使用类似以下的方式:

server {
    listen 80;
    server_name your-domain.com;

    # 限制整个 IP 段(如 192.168.1.0/24)
    deny 192.168.1.0/24;  # 拒绝这个 IP 段的访问
    allow all;  # 允许其他 IP 访问

    # 其他配置...
}

3. 允许特定 IP 或 IP 段,拒绝其他所有 IP

如果你只希望某些特定 IP 或 IP 段能够访问,而其他的 IP 都被拒绝,可以反过来配置,先允许特定的 IP 地址,然后拒绝所有其他的请求:

server {
    listen 80;
    server_name your-domain.com;

    # 允许特定 IP 地址访问
    allow 192.168.1.100;  # 允许 192.168.1.100 访问
    allow 192.168.1.0/24;  # 允许 192.168.1.x 段的 IP 访问

    # 拒绝其他所有 IP 地址的访问
    deny all;  # 拒绝所有其他 IP 地址的访问

    # 其他配置...
}

4. 多个 IP 或 IP 段

你可以配置多个 allowdeny 指令来允许或拒绝不同的 IP 或 IP 段。例如,允许来自 192.168.1.0/24192.168.2.100 的访问,拒绝其他所有 IP:

server {
    listen 80;
    server_name your-domain.com;

    # 允许多个 IP 或 IP 段访问
    allow 192.168.1.0/24;  # 允许整个子网
    allow 192.168.2.100;    # 允许单个 IP

    # 拒绝其他 IP 的访问
    deny all;  # 拒绝其他所有 IP

    # 其他配置...
}

总结:

  • 使用 allow 来允许特定的 IP 或 IP 段。
  • 使用 deny 来拒绝特定的 IP 或 IP 段。
  • 通过配置顺序,allow 优先于 deny,所以要根据需要灵活配置。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值