上篇实现了php网站的白名单访问,


这次的网站是通过域名nginx反代访问的,需要nginx规则进行白名单设置。需要实现只有家宽所拥有的动态IP访问,动态IP已经通过群晖ddns绑定域名。
首先在自己的目录/www/wwwroot/abc.com/里新建一个lock.php,用来获取群晖ddns域名的IP,并写入到nginx配置文件lock.conf。

<?php
//获取IP
$ddnsip = gethostbyname("ddns.abc.com");
//要创建的两个文件
$TxtFileName = "lock.conf";
//以读写方式打写指定文件,如果文件不存则创建
if( ($TxtRes=fopen ($TxtFileName,"w+")) === FALSE){
echo("创建可写文件:".$TxtFileName."失败");
exit();
}
echo ("创建可写文件".$TxtFileName."成功! ");
$StrConents = "allow ".$ddnsip."; 
deny  all;  ";//要 写进文件的内容
if(!fwrite ($TxtRes,$StrConents)){ //将信息写入文件
echo ("尝试向文件".$TxtFileName."写入".$StrConents."失败!");
fclose($TxtRes);
exit();
}
echo ("尝试向文件".$TxtFileName."写入".$StrConents."成功!");
fclose ($TxtRes); //关闭指针
?>

ssh连接进入文件所在目录,然后运行:

php lock.php

得到结果:

创建可写文件lock.conf成功! 尝试向文件lock.conf写入allow 12.11.25.11;
deny all; 成功!

然后打开网站nginx配置文件在括号内引入白名单配置文件:

sever{
 ……………………
#IP白名单
    include /www/wwwroot/abc.com/lock.conf;
}

大功告成。
最后添加一个计划任务,定时更新白名单配置文件:

cd /www/wwwroot/abc.com/
php lock.php

参考资料:
PHP创建文件及写入数据
Nginx IP访问控制,只允许指定的IP地址访问

Last modification:November 22, 2021
如果觉得我的文章对你有用,请随意赞赏