Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Laravel routes not found after nginx install

After I changed ICG to nginx all routes except index page does not work.

Laravel Config:

#/etc/nginx/sites-enabled/laravel server {     listen 80;      root /var/www/home;     index index.php;      server_name 192.168.178.71;      access_log /var/www/home/storage/app/logs/laravel-nginx-access.log;     error_log  /var/www/home/storage/app/logs/laravel-nginx-error.log error;       location /home {         root /home/public;         try_files $uri $uri/ /index.php?$query_string;     }      location = /favicon.ico { log_not_found off; access_log off; }     location = /robots.txt  { log_not_found off; access_log off; }       # ERROR     error_page 404 /index.php;       # DENY HTACCESS     location ~ /\.ht {         deny all;     } } 

Default config:

# /etc/nginx/sites-enabled/default server {         listen 80 default_server;         listen [::]:80 default_server;          root /var/www;          # Add index.php to the list if you are using PHP         index index.php index.html index.htm;          server_name 192.168.178.71 localhost;          location / {                 # First attempt to serve request as file, then                 # as directory, then fall back to displaying a 404.         try_files $uri $uri/ index.php?$query_string;          autoindex on;           # Remove trailing slash to please routing system.           if (!-d $request_filename) {             rewrite     ^/(.+)/$ /$1 permanent;         }           }              location ~ \.php$ {         #try_files $uri /index.php =404;         try_files $uri =404;         fastcgi_split_path_info ^(.+\.php)(/.+)$;         fastcgi_pass unix:/var/run/php5-fpm.sock;         fastcgi_index index.php;         include fastcgi_params;         fastcgi_param   SCRIPT_FILENAME document_root$fastcgi_script_name;          }          location ~ /\.ht {                 deny all;         } } 

my nginx config

#/etc/nginx/nginx.conf user www-data; worker_processes 4; pid /run/nginx.pid;  events {         worker_connections 768;         # multi_accept on; }  http {          disable_symlinks off;         ##         # Basic Settings         ##          sendfile on;         tcp_nopush on;         tcp_nodelay on;         keepalive_timeout 65;         types_hash_max_size 2048;         # server_tokens off;          # server_names_hash_bucket_size 64;         # server_name_in_redirect off;          include /etc/nginx/mime.types;         default_type application/octet-stream;          ##         # SSL Settings         ##          ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE         ssl_prefer_server_ciphers on;          ##         # Logging Settings         ##          access_log /var/log/nginx/access.log;         error_log /var/log/nginx/error.log;        ##         # Gzip Settings         ##          gzip on;         gzip_disable "msie6";            ##         # Virtual Host Configs         ##          include /etc/nginx/conf.d/*.conf;         include /etc/nginx/sites-enabled/*; } 

What I tried:

/var/www/home# (home folder is laravel folder) sudo chown -R www-data:www-data *   /var/www/home#  sudo chown -R root:root * 

also I tried to change

 try_files $uri $uri/ /index.php?$query_string;  try_files $uri $uri/ /index.php$is_args$args;  try_files $uri $uri/ /index.php;   php artisan cache:clear   

Mostly questions in google i have read, but nothing helps me.

My phpinfo - link

like image 798
user3265927 Avatar asked Feb 25 '16 17:02

user3265927


2 Answers

This is the correct basic config for Laravel and Nginx:

server {     listen   80 default_server;      root /var/www/laravel/public/;     index index.php index.html index.htm;      location / {          try_files $uri $uri/ /index.php$is_args$args;     }      # pass the PHP scripts to FastCGI server listening on /var/run/php5-fpm.sock     location ~ \.php$ {             try_files $uri /index.php =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;     } } 

EDIT: Instead of:

fastcgi_pass unix:/var/run/php5-fpm.sock; 

As of November 2018, as PHP 7.2 is out, it would be:

fastcgi_pass unix:/var/run/php7.2-fpm.sock; 
like image 130
Marc Garcia Avatar answered Sep 17 '22 11:09

Marc Garcia


When I sent parameters by get I did not recognize them, I just have to activate the following: try_files $uri $uri/ /index.php$is_args$args;

location / {     try_files $uri $uri/ /index.php$is_args$args; } 
like image 42
Diego Santa Cruz Mendezú Avatar answered Sep 17 '22 11:09

Diego Santa Cruz Mendezú