NGINX配置通配符

时间:2015-04-22 09:56:29

标签: 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.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"我们评估为安全漏洞的文件。

有什么建议吗?

1 个答案:

答案 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结尾的所有文件。