You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel应用如何为artisan启停脚本添加REMOTE_ADDR IP访问限制

给Laravel维护脚本添加IP访问限制

很容易实现,咱们直接在脚本最开头加入IP验证逻辑,就能把访问权限锁在指定IP范围内。下面是修改后的完整脚本,我会一步步解释关键部分:

<?php 
// /public/stop.php 

// 第一步:定义允许访问的IP列表,把你的信任IP加进去
$allowed_ips = [
    '127.0.0.1',       // 本地测试IP
    '192.168.1.100',   // 你的办公IP
    'xxx.xxx.xxx.xxx'  // 其他需要授权的公网IP
];

// 第二步:获取当前访问的客户端IP
$client_ip = $_SERVER['REMOTE_ADDR'];

// 第三步:验证IP是否在允许列表内,不在的话直接拒绝访问
if (!in_array($client_ip, $allowed_ips)) {
    // 可以返回403禁止访问,或者跳转到首页,根据你的需求调整
    http_response_code(403);
    echo 'Access Denied: You are not authorized to access this page.';
    exit; // 终止脚本,不让后续命令执行
}

// 原来的命令执行逻辑,只有通过IP验证才会走到这里
if (!isset($_GET['state'])){ 
    exec('cd ../ ; php artisan down --message "Recovery and Updating. Please try again later."'); 
    header('Location:/'); 
} else{ 
    exec('cd ../ ; php artisan up'); 
    header('Location:/'); 
}

一些额外的注意事项:

  • 如果你的服务器是通过反向代理(比如Nginx、Cloudflare)部署的,$_SERVER['REMOTE_ADDR']可能会拿到代理服务器的IP,而不是真实客户端IP。这种情况下,你可以尝试用$_SERVER['HTTP_X_FORWARDED_FOR']来获取真实IP,但要注意配置代理服务器正确传递这个头,避免被伪造。
  • 记得定期维护$allowed_ips数组,移除不再需要授权的IP,减少安全风险。
  • 确保web服务器的运行用户(比如www-data)有足够的权限执行php artisan命令,并且能读取Laravel项目目录的文件。
  • 不要把这个脚本的路径泄露给无关人员,即使有IP限制,多一层保密总是好的。

内容的提问来源于stack exchange,提问作者SaidbakR

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 06:35:33