Nginx重写为symfony2无法正常工作

我是一个nginx的新手,它是重写命令,我真的需要这个帮助。 我一直试图解决这一整天,但没有..

如果用户给这个url:

someurl.com/sub/1.0/healthcheck 

我想重写它以指向这里的Symfonys项目文件:

 /var/www/sub/1.0/web/app_dev.php 

Symfony的url中的“健康检查”。

但是,不。 这里不对劲。 看起来它find了Symfony,但是由于它总是返回,因此url有错误:

找不到路线

即使我从url中省略“健康检查”,它仍会返回相同的错误。 (有一个索引 – “/”作为路由)。

这是当前的Nginxconfiguration:

 server { server_name localhost; root /var/www/sub/1.0/web; error_log /var/log/nginx/error.log; access_log /var/log/nginx/access.log; location / { root /var/www/html/; index index.html; } location /sub/1.0/ { index app_dev.php; rewrite ^/sub/1.0/ /app_dev.php last; } location ~ (app|app_dev).php { include fastcgi_params; fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info; fastcgi_pass unix:/var/run/php/php7.0-fpm.sock; } } 

我想出了这一个。 问题是Symfony接受了请求uri,就fastcgi而言,这个请求没有被重写影响。 我添加了“fastcgi_param REQUEST_URI $ uri?$ args;” 和tadaa! 有用!

这是固定的configuration(没有多余的行,比如根位置'/'):

 server { root /var/www/sub/1.0/web; error_log /var/log/nginx/error.log; access_log /var/log/nginx/access.log; # If user writes the app_xxx.php into the url, remove it: rewrite ^/app_dev\.php/?(.*)$ /$1 permanent; location /sub/1.0/ { index app_dev.php; rewrite ^/sub/1.0/(.*)$ /app_dev.php/$1 last; return 403; # If the rewrite was not succesfull, return error. } location ~ (app|app_dev).php { include fastcgi_params; fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info; fastcgi_param REQUEST_URI $uri?$args; fastcgi_pass unix:/var/run/php/php7.0-fpm.sock; } }