让代码更简单

网站禁止ip访问,仅域名访问防止恶意解析

重要:本文最后更新于2023-02-01 09:22:24,某些文章具有时效性,若有错误或已失效,请在下方留言或联系代码狗

今天群里的小伙伴讨论如何禁止ip直接访问网站,又被我偷学了一招,立马给代码狗安排上。现在通过ip+端口访问本站将不能看到内容,有效防止恶意解析的情况发生。

以下教程在宝塔环境中实现,不是宝塔也能实现。使用的是Nginx网站环境。

先说下原理:简单来说就是设置一个默认的网站,当访问名称无匹配时返回默认网站内容。一般来说Nginx都自带了默认的静态网站,默认网站目录绑定的Nginx的安装目录下的html文件夹。这里使用宝塔的,就不多讨论别的环境了。

使用过Nginx的站长都应该看到过这样的一句配置。

复制
listen 80;
server_name daimadog.org;

其中 server_name就是用户访问时的服务名称,如果我们把这个名称改成ip地址,那么将只能通过ip访问,别的名称匹配不了。

于是我们可以将Nginx的默认网站配置文件修改成监听 server_name 为我们进制的ip地址,这样用户通过ip地址访问就会进入到我们设置的默认网站中。当然你也可以直接通过Nginx配置给他返回错误代码。

如果你的网站启用了ssl证书,那么你还需要监听443端口,配置参考下面的:

复制
server
{
    listen 80;
    listen 443 ssl;
    server_name _;

    # DEFAULT SSL CONFIG
    ssl_certificate    /www/server/panel/vhost/cert/0.default/fullchain.pem;
    ssl_certificate_key    /www/server/panel/vhost/cert/0.default/privkey.pem;
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
    ssl_prefer_server_ciphers off;
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 10m;
    add_header Strict-Transport-Security "max-age=31536000";

    index index.html;
    root /www/server/nginx/html;

}

证书随便搞一个,错误的也行。

如果你使用的是宝塔,那么可以直接将上面的代码复制,然后覆盖/www/server/panel/vhost/nginx/0.default.conf文件,如果你使用的宝塔版本支持设置https防窜站,那么只需要点击一下防窜站功能就行了。

感觉很棒!可以赞赏支持我哟~

1 打赏

评论 (0)

登录后评论
QQ咨询 邮件咨询 狗哥推荐