NGINX 配置通配符
NGINX configuration wildcard
我正在为我的项目使用 Symfony2 (PHP) 框架,但在配置我的 NGINX 以捕获到我放在 "web" 目录下的第 3 方库的请求时遇到了一个小问题.
这是我的配置
server {
listen 80;
server_name test.com;
root /var/www/my-symfony-project/web;
rewrite ^/app\.php/?(.*)$ / permanent;
location / {
index app.php;
try_files $uri @rewriteapp;
}
location @rewriteapp {
rewrite ^(.*)$ /app.php/ 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" 目录中有这个 "some-plugin" 文件夹,并且那里有 PHP 文件未被 Symfony2 路由处理。
当我在上面说明的 "server" 块中有以下 "location" 块时,我实际上使它起作用了。
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
:
location ~ ^/var/www/my-symfony-project/web/some-plugin/.*\.php$ {
# your rules here
}
这应该匹配所有路径以 /var/www/my-symfony-project/web/some-plugin/
开头并以 .php
结尾的大写或小写文件。
我正在为我的项目使用 Symfony2 (PHP) 框架,但在配置我的 NGINX 以捕获到我放在 "web" 目录下的第 3 方库的请求时遇到了一个小问题.
这是我的配置
server {
listen 80;
server_name test.com;
root /var/www/my-symfony-project/web;
rewrite ^/app\.php/?(.*)$ / permanent;
location / {
index app.php;
try_files $uri @rewriteapp;
}
location @rewriteapp {
rewrite ^(.*)$ /app.php/ 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" 目录中有这个 "some-plugin" 文件夹,并且那里有 PHP 文件未被 Symfony2 路由处理。
当我在上面说明的 "server" 块中有以下 "location" 块时,我实际上使它起作用了。
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
:
location ~ ^/var/www/my-symfony-project/web/some-plugin/.*\.php$ {
# your rules here
}
这应该匹配所有路径以 /var/www/my-symfony-project/web/some-plugin/
开头并以 .php
结尾的大写或小写文件。