JAVA和Nginx 教程大全

网站首页 > 精选教程 正文

Nginx 屏蔽通过 IP 地址访问的请求

wys521 2024-09-12 23:12:09 精选教程 25 ℃ 0 评论

1. 问题描述

我们的一些站点可以通过 IP 地址直接访问,虽然没有安全问题,但是通过 IP 地址直接访问,却会带来其他问题。比如,在 SEO 中,开启 IP 访问,如果有其他域名解析到我们的主机上,那对方的域名也是可以打开的,这样百度上就会出现两个一模一样的网站,就会被认为是垃圾站,一起被降权。

因此,我们希望禁止禁止这种形式的访问,并且“禁止”的含义为不做任何响应,就好像我们并不存在。

该笔记将记录:在 Nginx 中,如何禁止通过 IP 地址访问的请求,以及常见问题的处理。

2. 解决方法

2.1. 方法一、返回 404 或者重定向

在多数情况下,我们可以返回 404 或者重定向到我们的主域名:

server {
    listen 80 default_server;
    server_name ""; # 不重要
    return 404;
}

server {
        listen 80;
        server_name IP_ADDRESS;
        return 301 http://YOUR.DOMAIN;
}

default_server:表示该 server 为默认 server(用于处理通过 IP 地址访问的请求,以及那些没有绑定的域名)。如果没有 server {} 使用 default_server 指令,则使用首个 server 配置。

2.2. 方法二、完全不响应请求

server {
    listen 80 default_server;
    server_name _; # 不重要
    return 444;
}

return 444:该响应码表示不响应请求,并立即关闭连接。

通过 curl 测试,将返回 curl: (52) Empty reply from server 信息。

3. 参考文献

Module ngx_http_core_module / listen(http://nginx.org/en/docs/http/ngx_http_core_module.html#listen)
Nginx / Server names(http://nginx.org/en/docs/http/server_names.html)
Blocking IPs with Nginx – DreamHost Knowledge Base(https://help.dreamhost.com/hc/en-us/articles/216456127-Blocking-IPs-with-Nginx)
How to block access using the Server IP in NGINX? | DigitalOcean(https://www.digitalocean.com/community/questions/how-to-block-access-using-the-server-ip-in-nginx)
nginx - how to disable direct access to a web site by ip address - Stack Overflow(https://stackoverflow.com/questions/29104943/how-to-disable-direct-access-to-a-web-site-by-ip-address )


本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表