2014-01-13 12 views
11

Ich versuche mein Laravel 4 Projekt mit nginx einzurichten. Hier ist mein nginx Server-Block für Laravel:nginx Konfiguration für Laravel 4

server { 
     listen 80; 

     root /home/prism/www/laravel/public; 
     index index.php index.html index.htm; 

     server_name example.com; 

     location/{ 
       try_files $uri $uri/ /index.php$is_args$args; 

     } 
       location ~ \.php$ { 

       try_files $uri =404; 
       fastcgi_pass unix:/var/run/php5-fpm.sock; 
       fastcgi_index index.php; 
       fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 
       include fastcgi_params; 
     } 

Aber mein Problem ist, Its zeigt „404 not found“ Fehler für alle anderen Strecken außer den Standard ein, das kommt mit Standard-Installation.

Antwort

25

Dies ist eine NGINX-Konfiguration, die ich mit Laravel 4 und Laravel 4.1 verwendet habe, die funktioniert.

server { 

    listen 80; 
    server_name sub.domain.com; 
    set $root_path '/var/www/html/application_name/public'; 
    root $root_path; 

    index index.php index.html index.htm; 

    try_files $uri $uri/ @rewrite; 

    location @rewrite { 
     rewrite ^/(.*)$ /index.php?_url=/$1; 
    } 

    location ~ \.php { 

     fastcgi_pass 127.0.0.1:9000; 
     fastcgi_index /index.php; 

     include /etc/nginx/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 SCRIPT_FILENAME $document_root$fastcgi_script_name; 
    } 

    location ~* ^/(css|img|js|flv|swf|download)/(.+)$ { 
     root $root_path; 
    } 

    location ~ /\.ht { 
     deny all; 
    } 

} 
+1

Dies funktionierte für mich, aber ich konnte nicht alle Ihre Konfigurationseinstellungen verwenden. Was ich getan habe, war nur die aktuelle Standardeinstellung von Nginx zu verwenden und die 'try_files' in' location/{} 'zu ändern und dann den' @ rewrite' Speicherort hinzuzufügen. Jetzt funktioniert alles dandy. –

+0

Nr. Http://wiki.nginx.org/Pitfalls#Taxing_Rewrites @RobGordijn hat eine viel bessere Lösung. –

12

Sie könnten versuchen, diese für Standort/{...}

location/{ 
    try_files $uri $uri/ /index.php?$query_string; 
} 

$ query_string für mich gearbeitet.

+0

für mich Einstellung dies unter Standort/arbeitete: try_files $ uri $ uri//index.php?$args; –