Php 限制直接文件访问Nginx和Codeigniter

Php 限制直接文件访问Nginx和Codeigniter,php,codeigniter,nginx,Php,Codeigniter,Nginx,我正在寻找一种干净的方式来限制对运行在nginx上的CodeIgniter PHP站点中直接文件的访问 我有一些.phar和.json文件在web根目录中浮动,还有一些文件是CodeIgniter无法处理的 如果要直接在浏览器中键入.php文件的路径,则使用 <?php defined('BASEPATH') OR exit('No direct script access allowed'); 在这里要小心。。我不确定您是否希望通过http请求访问.json 但以下是如何在.htacc

我正在寻找一种干净的方式来限制对运行在nginx上的CodeIgniter PHP站点中直接文件的访问

我有一些
.phar
.json
文件在web根目录中浮动,还有一些文件是CodeIgniter无法处理的

如果要直接在浏览器中键入
.php
文件的路径,则使用

<?php defined('BASEPATH') OR exit('No direct script access allowed');

在这里要小心。。我不确定您是否希望通过http请求访问.json

但以下是如何在.htaccess文件中执行此操作:

# Prevent direct access to certain filetypes and directories
<Files ~ "(\.(phar|json))$">
Order deny,allow
Deny from all
</Files>
#防止直接访问某些文件类型和目录
命令拒绝,允许
全盘否定

我强烈建议您只需将私有文件放在一个可以chmod的目录中,这样,如果您需要的话,就不能在应用程序之外访问它们。

将任何不应该是公共的(例如CodeIgniter)放在公共目录之外


例如,如果您的根目录是
/var/www/htdocs
,则将您的内容放入
/var/www
,如
/var/www/codeigniter
。然后,您可以在
/var/www/htdocs
中删除一个
index.php
文件,并从中包含CodeIgniter。

为什么不简单地对包含文件的文件夹进行chmod,以便它们不能被公开访问?如果不使用这些文件,为什么需要将它们放在webroot中?我也支持@KevinFlorida关于chmod的说法,请注意,需要访问它们的任何文件都在相应的组中运行。好吧,但是我可能错过了直接访问拒绝声明的PHP文件呢?PHP文件不是问题,因为它们在发送到clientok之前会被解释谢谢,但我使用的是nginx-我想知道nginx的具体情况(即在nginx.conf中)。我还将chmod各种文件,并将它们放在root上。
# Prevent direct access to certain filetypes and directories
<Files ~ "(\.(phar|json))$">
Order deny,allow
Deny from all
</Files>