需在Web服务器层配置IP白名单:Nginx环境修改配置文件添加allow/deny指令;Apache环境通过.htaccess使用Require ip;PHP层可在index.php顶部添加IP校验逻辑。

如果您正在使用宝塔面板部署的PHP 8.4站点,希望仅允许特定IP地址访问该站点,防止未授权用户请求或恶意扫描,则需在Web服务器层配置IP白名单规则。以下是针对Nginx和Apache两种主流环境的具体操作步骤:
一、通过Nginx配置IP白名单(适用于宝塔默认Nginx环境)
此方法直接修改站点对应的Nginx配置文件,在server块中添加allow/deny指令,由Nginx在请求进入PHP前完成IP过滤,性能高效且无需PHP参与判断。
1、登录宝塔面板,进入【网站】页面,找到目标PHP 8.4站点,点击右侧【设置】按钮。
2、在弹出窗口中切换至【配置文件】选项卡,定位到location ~ \.php$区块上方空白处(或server区块内任意位置,但须在location之外)。
立即学习“PHP免费学习笔记(深入)”;
3、插入以下配置代码(示例仅允许192.168.1.100和203.203.203.0/24网段访问,其余全部拒绝):
allow 192.168.1.100;
allow 203.203.203.0/24;
deny all;
4、点击右上角【保存】按钮,随后点击【重载配置】使规则生效。
二、通过.htaccess文件配置IP白名单(仅限Apache环境)
此方法适用于宝塔中已切换为Apache作为Web服务器的站点,利用Apache内置的mod_authz_host模块实现访问控制,配置灵活且无需重启服务。
1、在站点根目录(如/www/wwwroot/your-site.com/)下找到或新建名为.htaccess的文件。
2、用文本编辑器打开该文件,确保首行包含启用重写引擎的指令(若不存在则添加):
RewriteEngine On
3、在文件末尾添加如下白名单规则(示例允许10.0.0.5和172.16.0.0/16):
Require ip 10.0.0.5
Require ip 172.16.0.0/16
4、保存文件,返回宝塔面板【网站】页,对该站点点击【重载Apache】。
三、通过PHP代码层实现IP白名单(兼容Nginx与Apache)
此方法在PHP 8.4应用入口文件(如index.php)顶部注入IP校验逻辑,适用于需动态判断或结合数据库查询白名单的场景,但会略微增加PHP执行开销。
1、打开站点主入口PHP文件(通常为/www/wwwroot/your-site.com/index.php)。
2、在
$allowed_ips = ['112.80.123.45', '221.204.67.0/24'];
$client_ip = $_SERVER['REMOTE_ADDR'] ?? '';
function ip_in_range($ip, $range) { if (strpos($range, '/') !== false) { list($subnet, $bits) = explode('/', $range); $ip_long = ip2long($ip); $subnet_long = ip2long($subnet); $mask = -1
if (!in_array($client_ip, $allowed_ips) && !array_reduce($allowed_ips, function($carry, $r) use ($client_ip) { return $carry || ip_in_range($client_ip, $r); }, false)) { http_response_code(403); exit('Forbidden'); }
四、通过宝塔防火墙插件配置IP白名单
若已安装并启用宝塔官方【防火墙】插件(专业版功能),可借助图形化界面快速添加IP白名单规则,避免手动编辑配置文件,降低误操作风险。
1、进入宝塔面板左侧菜单【安全】→【防火墙】,确认插件状态为“已启用”。
2、在【IP黑名单/白名单】区域,点击【添加白名单】按钮。
3、在弹出框中输入单个IP地址(如198.51.100.25)或CIDR格式网段(如192.0.2.0/24),填写备注后点击【确定】。
4、规则自动生效,无需重启Web服务,可在【当前规则】列表中查看状态。











