Как решить ошибку 502 Bad Gateway в Ubuntu Nginx Laravel?

Сайт лежит по адресу home/user/web/testlaravel.loc локального компьютера под Ubuntu. Внутри развернул приложение Ларавел, которое должно обращаться к папке public.

Настроил конфиг в sites-available

server {
    listen 80 ;
    listen [::]:80 ;

    root /home/user/web/testlaravel.loc/public;

    # Add index.php to the list if you are using PHP
    index index.php;

    server_name testlaravel.loc;

        add_header X-Frame-Options "SAMEORIGIN";
        add_header X-Content-Type-Options "nosniff";

        charset utf-8;

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

    location = /favicon.ico { access_log off; log_not_found off; }
    location = /robots.txt  { access_log off; log_not_found off; }
 
    error_page 404 /index.php;
 
    location ~ \.php$ {
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_index index.php;
        fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
        include fastcgi_params;
    }
 
    location ~ /\.(?!well-known).* {
        deny all;
    }
}

Прописал в hosts. При попытке обратиться к сайту в браузере получаю 502 Bad Gateway nginx/1.24.0 (Ubuntu)

В логах nginx

[crit] 2487#2487: *1 connect() to unix:/var/run/php/php8.1-fpm.sock failed 
(13: Permission denied) while connecting to upstream, client: 127.0.0.1, 
server: testlaravel.loc, request: "GET / HTTP/1.1", 
upstream: "fastcgi://unix:/var/run/php/php8.1-fpm.sock:", host: "testlaravel.loc"

Как исправить?


Ответы (1 шт):

Автор решения: Михаил Ребров

Проблема в том, что nginx и php-fpm запускается под пользователем nginx или www-data (в зависимости от Ваших настроек).

Папка же, на которую Вы ссылаетесь лежит в домашней директории Вашего пользователя.

Вы можете либо перенести проект, в папку, доступную для пользователей nginx/www-data: /var/www/{{PROJECT_NAME}}

Либо, пользователей nginx/www-data нужно добавить в группу Вашего пользователя (Вы указали user)

sudo usermod -a -G user nginx

или, если он работает под www-data, то

sudo usermod -a -G user www-data

После чего необходимо дать группе права на чтение, запись для данной папки (выполнение не требуется, насколько помню)

chmod -R 644 /home/user/web/testlaravel.loc/
chmod -R 664 /home/user/web/testlaravel.loc/public/
→ Ссылка