502 Bad Gateway for Laravel 5.4 with nginx and php7.0-fpm in Ubuntu

22,774

Solution 1

Updating one line with default php based config worked,

server {
        listen   80; ## listen for ipv4; this line is default and implied
        #listen   [::]:80 default ipv6only=on; ## listen for ipv6

        root /var/www/html/laravel/public;
        index index.html index.htm index.php;

        # Make site accessible from http://localhost/
        server_name localhost;

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

        location ~ \.php$ {
                include snippets/fastcgi-php.conf;
                fastcgi_pass unix:/run/php/php7.0-fpm.sock;
        }

        location ~ /\.ht {
                deny all;
        }
}

Here changed try_files $uri $uri/ =404; to try_files $uri $uri/ /index.php?$query_string;

Solution 2

First install: sudo apt install php-fpm

Then check /etc/php/7.4/fpm , Make sure your version of php7.0-fpm.sock, php7.4-fpm.sock or 7.x

fastcgi_pass unix:/run/php/php7.4-fpm.sock;
Share:
22,774
Anshad Vattapoyil
Author by

Anshad Vattapoyil

Works with Krews Limited, Abu Dhabi

Updated on July 09, 2022

Comments

  • Anshad Vattapoyil
    Anshad Vattapoyil almost 2 years

    I have my Laravel 5.4 app setup in Ubuntu 16.04 server with nginx and php7.0-fpm, it gives

    502 Bad Gateway
    

    Nginx virtualhost config,

    server {
        listen   80; ## listen for ipv4; this line is default and implied
        #listen   [::]:80 default ipv6only=on; ## listen for ipv6
    
        root /var/www/html/laravel/public;
        index index.php index.html;
    
        # Make site accessible from http://localhost/
        server_name localhost;
    
        location / {
            try_files $uri $uri/ /index.php?$query_string;
        }
    
        location ~ \.php$ {
            try_files $uri /index.php =404;
            include                  fastcgi_params;
            fastcgi_keep_conn on;
            fastcgi_index            index.php;
            fastcgi_split_path_info  ^(.+\.php)(/.+)$;
            fastcgi_param PATH_INFO $fastcgi_path_info;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            fastcgi_intercept_errors on;
            fastcgi_pass unix:/var/run/php7.0-fpm.sock;
        }
    }
    

    Tried the following but still not working,

    Changed fastcgi_pass unix:/var/run/php7.0-fpm.sock; to fastcgi_pass 127.0.0.1:9000;

    Changed try_files $uri $uri/ /index.php?$query_string; to try_files $uri $uri/ /index.php$is_args$args;

    Restarted service after each change,

    service nginx restart
    service php7.0-fpm restart
    

    I can access only the main route with this config,

    server {
            listen   80; ## listen for ipv4; this line is default and implied
            #listen   [::]:80 default ipv6only=on; ## listen for ipv6
    
            root /var/www/html/laravel/public;
            index index.html index.htm index.php;
    
            # Make site accessible from http://localhost/
            server_name localhost;
    
            location / {
                    try_files $uri $uri/ =404;
            }
    
            location ~ \.php$ {
                    include snippets/fastcgi-php.conf;
                    fastcgi_pass unix:/run/php/php7.0-fpm.sock;
            }
    
            location ~ /\.ht {
                    deny all;
            }
    }
    
  • Yevgeniy Afanasyev
    Yevgeniy Afanasyev over 5 years
    I have an error message, nginx: [emerg] open() "/etc/nginx/snippets/fastcgi-php.conf" failed (2: No such file or directory) in /etc/nginx/conf.d/default.conf:16 please help.