2016-10-19 4 views
0

Je suis un débutant avec nginx et ses commandes de réécriture et j'ai vraiment besoin d'aide avec celui-ci. J'ai essayé de résoudre ce toute la journée mais rien ..Nginx réécrire à symfony2 ne fonctionne pas

Si l'utilisateur donne l'adresse suivante:

someurl.com/sub/1.0/healthcheck 

Je voudrais réécrire pour pointer dans le fichier de projet Symfonys ici:

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

Et le "healthcheck" dans l'URL va pour le Symfony.

Mais non. Quelque chose cloche ici. Il semble que ce trouve le Symfony, mais il y a quelque chose de mal avec l'url car il revient toujours:

Route non trouvé

Même si j'omettent le « healthcheck » de l'URL, il encore des retours la même erreur. (Il y a un indice -action avec "/" comme la route.)

Voici la configuration actuelle 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; 
    } 
} 

Répondre

0

je me suis dit celui-ci dehors. Le problème était que Symfony prenait la requête uri, qui n'était pas affectée par la réécriture en ce qui concernait fastcgi. J'ai ajouté le "fastcgi_param REQUEST_URI $ uri? $ Args;" et Tadaa! Ça marche!

Voici la configuration fixe (sans les lignes en excès, comme l'emplacement racine '/'):

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; 
    } 
}