最近做了一个基于php的程序,用于定时批量给企业微信用户发送提醒消息,定时任务见Windows服务器通过计划任务每天访问URL
因为调用该页面即会触发消息发送,所以想要限制这个url只能本地ip访问。可以通过apache的访问限制来做。在vhost对应的域名下的配置中添加:
<Location /aa/bb>
Require ip xxx.xxx.xxx.xxx
</Location>
重启apache服务即可。这里有两点要注意:
1.路径后面的 /
经测试,如果使用 <Location /aa/bb/>
则访问http://test.com/aa/bb/index会报403,限制访问,而访问http://test.com/aa/bb则不会触发访问限制,还能正常访问。
现在框架多为控制器访问方式,可以不带控制器中的方法,所以可能会限制失效,这里建议使用<Location /aa/bb>
2.apache的权限限制
(1)如果只允许某个ip访问
<Location /aa/bb>
Require ip xxx.xxx.xxx.xxx
</Location>
(2)只允许ip段访问,也可以允许多段ip访问。
#允许10.10段ip访问
<Location /aa/bb>
Require ip 10.10
</Location>
# 允许多段ip访问
<Location /aa/bb>
Require ip 10.10 192.168
</Location>
(3)只允许本地访问
<Location /aa/bb>
Require local
</Location>
(4)允许所有访问或拒绝所有访问
Require all granted #允许所有
Require all denied #拒绝所有