某个PHP文件,如果禁止外网访问,即这个PHP仅限服务器访问
因为很多数据需要用到定时任务定时运行php脚本生成,以防外网或蜘蛛运行此PHP而生成错误的数据,所以需要屏蔽外网,只限服务器访问。
某个PHP文件,如果禁止外网访问,即这个PHP仅限服务器访问
因为很多数据需要用到定时任务定时运行php脚本生成,以防外网或蜘蛛运行此PHP而生成错误的数据,所以需要屏蔽外网,只限服务器访问。
Apache的Url重写能解决这个问题
RewriteCond %{REQUEST_URI} myfile\.php [NC]
RewriteCond %{REMOTE_ADDR} !^127.0.0.1$
RewriteRule .* - [R=503,L]
1 回答4.1k 阅读✓ 已解决
3 回答1.9k 阅读✓ 已解决
2 回答2.2k 阅读✓ 已解决
2 回答2.2k 阅读
1 回答1.4k 阅读✓ 已解决
798 阅读
649 阅读
一般直接对外服务的服务器,都是由Web服务器接受HTTP请求,然后再转给mod_php或者php-fpm解释执行PHP程序。这意味着完全可以在Web服务器上限制。Apache服务器的限制方法 @iefsou 君已经提供了,我来写个nginx的限制配置:
这个方法也可以用在外网限制个别IP可以访问,具体请参考nginx的access模块配置手册。
当然,在PHP程序里限制也不是不可以,按同样的方式判断用户的IP是否局域网IP:
如果不是来自局域网,你就
header
输出个403或者显示个错误页面给他看就行。值得一提的是用PHP的方法判断会导致请求必须交给PHP解释器,然而PHP解释器的性能比nginx直接返回403要差得太多,具体可以自己压测一下。当然如果是在开发给客户自己安装的产品就不要让没经验的小白客户们改服务器配置了。