Php NGINX配置通配符

Php NGINX配置通配符,php,symfony,nginx,Php,Symfony,Nginx,我在我的项目中使用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.p

我在我的项目中使用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”目录

现在,问题是我在“web”目录中有一个“someplugin”文件夹,其中有一些PHP文件不是由Symfony2路由处理的

实际上,当我在上面所示的“服务器”块中有以下“位置”块时,它就工作了

location ~ \.php$ {
    fastcgi_pass   unix:/var/run/php5-fpm.sock;
    fastcgi_split_path_info ^(.+\.php)(/.*)$;
    include fastcgi_params;
}
一开始使用这种类型的配置似乎还可以,但我们意识到它接受对任何“*.php”文件的请求,我们将其评估为安全漏洞


有什么建议吗?

允许访问
.php
文件通常不被视为危险或安全漏洞,只要php文件是以源代码形式执行和提供的,当然,不要打印任何敏感信息。
如果前者中的任何一个都不是这种情况,您可能应该更改设置或代码

无论如何,您应该能够将
.php
文件处理限制为
/var/www/my symfony project/web/some plugin
,方法是使用以下内容作为
位置

location ~ ^/var/www/my-symfony-project/web/some-plugin/.*\.php$ {
    # your rules here
}
这应该匹配路径以
/var/www/my symfony project/web/some plugin/
开头并以大写或小写形式以
.php
结尾的所有文件