Nginx reescreve para o symfony2 não funcionar

3

Sou novato no nginx e reescrevo comandos e realmente preciso de ajuda com este. Eu tenho tentado resolver isso o dia inteiro, mas nada ..

Se o usuário fornecer este URL:

someurl.com/sub/1.0/healthcheck

Gostaria de reescrevê-lo para apontar para o arquivo de projeto do Symfonys aqui:

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

E o "healthcheck" no url vai para o Symfony.

Mas não. Algo está errado aqui. Parece que ele encontra o Symfony, mas há algo errado com o URL, já que ele sempre retorna:

Route not found

Mesmo se eu omitir o "healthcheck" do URL, ele ainda retornará o mesmo erro. (existe um índice -action com "/" como rota.)

Aqui está a configuração atual do Nginx:

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;
  }
}
    
por GotBatteries 20.10.2016 / 09:55

1 resposta

0

Eu percebi isso. O problema é que o Symfony recebe o pedido uri, que não foi afetado pela reescrita no que diz respeito ao fastcgi. Eu adicionei o "fastcgi_param REQUEST_URI $ uri? $ Args;" e tadaa! Funciona!

Aqui está a configuração fixa (sem as linhas em excesso, como a localização da raiz '/'):

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;
  }
}
    
por 20.10.2016 / 12:44

Tags