【问题标题】:502 Bad Gateway for Laravel 5.4 with nginx and php7.0-fpm in Ubuntu502 Bad Gateway for Laravel 5.4 with nginx and php7.0-fpm in Ubuntu
【发布时间】:2020-11-12 17:16:09
【问题描述】:

我的Laravel 5.4 应用程序设置在Ubuntu 16.04 服务器中,带有nginxphp7.0-fpm,它提供了

502 Bad Gateway

Nginx 虚拟主机配置,

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

尝试了以下方法,但仍然无法正常工作,

fastcgi_pass unix:/var/run/php7.0-fpm.sock; 更改为fastcgi_pass 127.0.0.1:9000;

try_files $uri $uri/ /index.php?$query_string; 更改为try_files $uri $uri/ /index.php$is_args$args;

每次更改后重新启动服务,

service nginx restart
service php7.0-fpm restart

我只能通过这个配置访问主路由,

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

【问题讨论】:

  • 对我来说它指向了错误的 fpm 套接字。我不得不将php7.0-fpm 更改为php7.2-fpm

标签: php laravel ubuntu nginx laravel-5


【解决方案1】:

使用基于 php 的默认配置更新一行有效,

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

这里把try_files $uri $uri/ =404;改成try_files $uri $uri/ /index.php?$query_string;

【讨论】:

  • 我有一条错误信息,nginx: [emerg] open() "/etc/nginx/snippets/fastcgi-php.conf" failed (2: No such file or directory) in /etc/nginx/conf.d/default.conf:16请帮忙。
【解决方案2】:

首次安装:sudo apt install php-fpm

然后检查/etc/php/7.4/fpm,确定你的php版本是7.0-fpm.sock、php7.4-fpm.sock还是7.x强>

fastcgi_pass unix:/run/php/php7.4-fpm.sock;

【讨论】: