温馨提示×

centos apache怎样限制ip

小樊
45
2026-10-11 20:10:09
栏目: 智能运维

在 CentOS 上通过 Apache(httpd)限制 IP 访问,常见有几种方式,下面按最常用 → 进阶给你说明,并附具体配置示例。


一、使用 Apache 自带的 Require(推荐,CentOS 7+)

CentOS 7/8 默认使用 Apache 2.4,用 Require 指令。

1️⃣ 限制整个网站(全局)

编辑 Apache 主配置或虚拟主机:

vi /etc/httpd/conf/httpd.conf

或

vi /etc/httpd/conf.d/your-site.conf

示例(只允许 192.168.1.100 访问):

<Directory "/var/www/html">
    Require ip 192.168.1.100
</Directory>

❌ 拒绝所有,只允许指定 IP:

<Directory "/var/www/html">
    Require all denied
    Require ip 192.168.1.0/24
</Directory>

2️⃣ 限制某个目录或文件

<Directory "/var/www/html/admin">
    Require ip 10.0.0.5
</Directory>

或限制单个文件:

<Files "config.php">
    Require all denied
</Files>

3️⃣ 禁止某个 IP(黑名单)

<Directory "/var/www/html">
    Require all granted
    Require not ip 203.0.113.50
</Directory>

二、使用 .htaccess(适合虚拟主机)

如果不能用主配置:

vi /var/www/html/.htaccess
Require ip 192.168.1.100

⚠️ 需要 Apache 允许 .htaccess:

<Directory "/var/www/html">
    AllowOverride All
</Directory>

三、使用 Firewall(系统层限制,更彻底)

如果你是想直接不让某些 IP 访问服务器:

# 只允许某个 IP 访问 80/443
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.100" port protocol="tcp" port="80,443" accept'
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" port protocol="tcp" port="80,443" reject'
firewall-cmd --reload

四、使用 mod_evasive(防暴力 / CC 攻击,可选)

yum install mod_evasive

适合自动封 IP,不是手动限制。


五、修改后必须做的

httpd -t        # 检查配置
systemctl restart httpd

总结

需求 推荐方式
限制某个 IP 访问网站 Apache Require
限制后台目录 <Directory>
防止外部直接访问 Firewall
防攻击 mod_evasive

如果你能说明是 CentOS 几 + Apache 版本 + 限制场景(整站 / 目录 / API),我可以给你更精确的配置。

0 踩