Lỗi 502 bad gateway khi cài PHP7.0-FPM cho máy chủ Nginx-1.13.12
E cài php-fpm trên nginx lastest version nhưng lại bị lỗi 502 .Các bác cho e hỏi cấu hình php-fpm với nginx bản ** 1.13.12 ** như thế nào với ạ Bản nginx cũ 1.10.3 e config vẫn ok còn bản mới e chả biết config ntn -_- trên Ubuntu 16.04 /etc/nginx/conf.d/default.conf
location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#}
2 CÂU TRẢ LỜI
Lỗi 502 thì có thể là do process php-fpm
của bạn không chạy, hay do nginx không thể connect đến php-fpm
.
Bạn thử làm một vài cách sau xem sao:
- Check xem
php-fpm
có chạy không bằng lệnhps aux | grep php-fpm
- Check xem
php-fpm
có đúng là đang chạy ở port 9000 không, hay là đang chạy bằng unix socket. Bạn có thể dùngnetstat
để check:netstat -tapen | grep 9000
. Nếu không thấy kết quả, thì có thểphp-fpm
đang lắng nghe bằng unix socket. Bạn check thư mục/var/run/
hoặc/var/run/php/
xem có filephp7.0-fpm.sock
không. Nếu có thì bạn cần sửa configfastcgi_pass
từ127.0.0.1:9000
, sang địa chỉ file socket, ví dụ như/var/run/php/php7.0-fpm.sock
- Nếu vẫn không được, thì bạn có thể vào thư mục
/var/log/nginx/
, check nội dung fileerror.log
rồi share lên đây được không. Nó sẽ giúp mọi người thấy rõ hơn về vấn đề mà nginx đang gặp phải
Error.log : 2018/05/10 00:36:08 [crit] 15921#15921: *1 connect() to unix:/var/run/php/php7.0-fpm.sock failed (13: Permission denied) while connecting to upstream, client: 127.0.0.1, server: localhost, request: "GET /info.php HTTP/1.1", upstream: "fastcgi://unix:/var/run/php/php7.0-fpm.sock:", host: "localhost
@dezeross Vậy là php-fpm
của bạn chạy bằng unix socket à
Nếu hiện giờ nó đang gặp lỗi Permission denied thì có thể là do process nginx
và php-fpm
đang chạy dưới 2 user khác nhau :-s Bạn thử check xem sao
# ps aux | grep php-fpm
# ps aux | grep nginx
bạn vào trong config của php-fpm tại file www.conf
(trong trường hợp của bạn thì có thể nó nằm trong /etc/php/7.0/fpm/pool.d/
), sửa lại phần listen.owner
với listen.group
sao cho giống với của nginx
là được
Chẳng hạn
listen.owner = www-data
listen.group = www-data
e sửa r mà n lại File not found // error.log: *1 FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream,
N chạy rồi em cảm a
Bạn có thể check config syntax trước:
nginx -c /etc/nginx/nginx.conf -t
Rồi tham khảo config này xem sao:
server {
server_name localhost;
listen 80;
root /var/www/html;
index index.php index.html index.htm;
charset utf-8;
access_log /var/log/nginx/access.log;
location / {
try_files $uri /index.php$is_args$args;
index index.php index.html index.htm;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
}
e cảm ơn ạ :v