Apache和Nginx禁止ip直接访问的方法

麦子
麦子
管理员
1219
文章
0
粉丝
运维技术118字数 519阅读1分43秒阅读模式

在运维服务器的过程中,我们常会遇到服务器遭受特定IP地址的攻击或被恶意扫描的情况,此时最常用的应对手段便是封禁该IP或IP段。

针对这一需求,主流Web引擎(如Apache与Nginx)的配置方式存在差异:Apache通常需在网站根目录下的.htaccess文件中设置封禁规则;而Nginx则需在指定的conf配置文件中进行操作——既支持全局生效的配置,也可针对单个站点单独设置。

在这里,整理常见的Apache和Nginx禁止IP的一些用法。

第一、Apache禁止IP直接访问

1、HTTP 禁止IP直接访问

#NameVirtualHost xx.xxx.xxx.xx
<VirtualHost *:80>
ServerName xx.xxx.xxx.xx
ServerAlias xx.xxx.xxx.xx
<Location />
Order Allow,Deny
Deny from all
</Location>
</VirtualHost>

2、HTTPS禁止IP直接访问

#NameVirtualHost xx.xxx.xxx.xx
<VirtualHost *:443>
ServerName xx.xxx.xxx.xx
ServerAlias xx.xxx.xxx.xx
SSLEngine on
SSLProtocol all -SSLv2 -SSLv3
SSLCipherSuite HIGH:!RC4:!MD5:!aNULL:!eNULL:!NULL:!DH:!EDH:!EXP:+MEDIUM
SSLHonorCipherOrder on
SSLCertificateFile /etc/letsencrypt/live/zhujipingjia.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/zhujipingjia.com/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/zhujipingjia.com/fullchain.pem
<Location />
Order Allow,Deny
Deny from all
</Location>
</VirtualHost>

第二、Nginx禁止IP直接访问

1、禁止HTTP直接IP访问

server
    {
        listen 80 default;
        return 403;
    }

2、禁止HTTPS直接IP访问

server
{
listen 80 default;
listen 443 default_server;
server_name _;
return 403;
#error_page 404/404.html;
ssl_certificate /etc/letsencrypt/live/zhujipingjia.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/zhujipingjia.com/privkey.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM- 
SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4:!DH:!DHE;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
error_page 497 https://$host$request_uri;
#SSL-END
}

第三、PHP禁止IP和IP段访问

    <?
    //禁止某个IP
    $banned_ip = array (
    "127.0.0.1",
    //"119.6.20.66",
    "192.168.1.4"
    );
    if ( in_array( getenv("REMOTE_ADDR"), $banned_ip ) )
    {
    die ("您的IP禁止访问!");
    }
    //禁止某个IP段
    $ban_range_low=ip2long("119.6.20.65");
    $ban_range_up=ip2long("119.6.20.67");
    $ip=ip2long($_SERVER["REMOTE_ADDR"]);
    if ($ip>$ban_range_low && $ip<$ban_range_up)
    {
    echo "您的IP在被禁止的IP段之中,禁止访问!";
    exit();
    }
    ?>

这样,如果我们有需要的话可以设定禁止IP直接访问服务器和网站。

投上你的一票
 
  • 本文由 麦子 发表于2026年2月4日 09:23:38
  • 转载请务必保留本文链接:https://www.zhujipingjia.com/apache-nginx-blockip.html
运维技术

利用CSS样式给Banner图片增加滤镜效果

老蒋在处理一个客户的网站Banner图片的时候,原图偏亮,希望图片稍微加上不透明的遮罩滤镜效果。我们正常可以将图片直接调整色调即可,但是如果客户以后希望原图那我们还要重新将图片替换有点麻烦,于是就考虑...