我正在为我的项目使用Symfony2(PHP)框架,并且在配置我的NGINX以捕获请求到我放在" web"之后的第三方库方面遇到了一个小问题。 。目录
这是我的配置
server {
listen 80;
server_name test.com;
root /var/www/my-symfony-project/web;
rewrite ^/app\.php/?(.*)$ /$1 permanent;
location / {
index app.php;
try_files $uri @rewriteapp;
}
location @rewriteapp {
rewrite ^(.*)$ /app.php/$1 last;
}
location ~ ^/(app|app_dev|config)\.php(/|$) {
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_split_path_info ^(.+\.php)(/.*)$;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param HTTPS off;
}
}
您可能已经注意到根目录指向" / var / www / my-symfony-project / web"目录。
现在,问题是我有这个" some-plugin" " web"内的文件夹目录,那里有来自Symfony2路由不处理的PHP文件。
当我有以下" location"阻止"服务器"上面说明的块。
location ~ \.php$ {
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_split_path_info ^(.+\.php)(/.*)$;
include fastcgi_params;
}
一开始似乎没有这种类型的配置,但我们意识到它接受任何" * .php"我们评估为安全漏洞的文件。
有什么建议吗?
答案 0 :(得分:2)
允许访问.php
文件通常不被视为危险或安全漏洞,只要PHP文件执行且不以源代码形式提供,当然,不会打印任何敏感信息。
如果前者中的任何一个不,您应该更改您的设置或代码。
无论如何,您应该能够将.php
文件处理限制为/var/www/my-symfony-project/web/some-plugin
,方法是使用以下location
:
location ~ ^/var/www/my-symfony-project/web/some-plugin/.*\.php$ {
# your rules here
}
这应匹配路径以/var/www/my-symfony-project/web/some-plugin/
开头并以大写或小写以.php
结尾的所有文件。