Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

nginx configuration for Laravel 4

I am trying to setup my Laravel 4 project using nginx . Here is my nginx server block for laravel :

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

But my problem is , Its showing "404 not found" error for all other routes except the default one , that comes with default installation .

like image 568
pyprism Avatar asked Jan 13 '14 12:01

pyprism


People also ask

Can laravel work with nginx?

Basically, nginx is the web server that was used with laravel to run the application; using laravel 5.6 and nginx; we can run both under the stack lemp. For running the laravel application with nginx first, we need to install the nginx server on our system.

How do I test nginx?

Through a simple command you can verify the status of the Nginx configuration file: $ sudo systemctl config nginx The output will show if the configuration file is correct or, if it is not, it will show the file and the line where the problem is.


1 Answers

This is an NGINX Configuration i've used with Laravel 4 and Laravel 4.1 that works.

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

}
like image 115
ajtrichards Avatar answered Nov 16 '22 01:11

ajtrichards