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
相关产品推荐
相关产品推荐

