Как решить ошибку 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/