Môi trường:
- Phiên bản Laravel: 5.8.29
- Phiên bản PHP
$ php --version
: PHP 7.2.24 (cli)
- Phiên bản NGINX
$ nginx -v
: phiên bản nginx: nginx/1.14.0 (Ubuntu)
Báo cáo vấn đề:
Mọi thứ đều hoạt động tốt, ngoại trừ một API cụ thể mà tôi đưa vào tiêu đề một số mã thông báo (mã thông báo mang điển hình) và nó đang trả về lỗi 502 từ Chrome (trong tab mạng)
Tuy nhiên, khi tôi cố gắng gọi nó từ Postman hoặc sử dụng Xoăn
cli yêu cầu từ máy chủ, nó sẽ trả lại dữ liệu chính xác.
Điều gì có thể sai ở đây?
Lỗi
NGINX 502 Cổng Xấu
Nhật ký
$ đuôi sudo -30 /var/log/nginx/error.log
[lỗi] 4713#4713: *705118 recv() không thành công (104: Thiết lập lại kết nối bởi ngang hàng) trong khi đọc tiêu đề phản hồi từ thượng nguồn, máy khách: 111.11.11.111, máy chủ: domain.com, yêu cầu: "POST /action/api/path HTTP/1.1", ngược dòng: "fastcgi://unix:/var/run/php/php7.2-fpm.sock:", máy chủ lưu trữ: "domain.com", liên kết giới thiệu: "domain.com/path"
$ sudo đuôi /var/log/php7.2-fpm.log
CẢNH BÁO: [pool www] con 28524 đã thoát trên tín hiệu 11 (SIGSEGV - lõi bị đổ) sau
THÔNG BÁO: [pool www] con 8033 bắt đầu
Tệp & Cấu hình:
/etc/nginx/nginx.conf
dữ liệu www của người dùng;
worker_processes tự động;
pid /run/nginx.pid;
bao gồm /etc/nginx/modules-enabled/*.conf;
sự kiện {
công_nhân kết_nối 768 ;
# đa_chấp vào ;
}
http {
##
# Cài đặt cơ bản
##
gửi tệp trên;
bật tcp_nopus;
bật tcp_nodelay;
keepalive_timeout 65;
loại_hash_max_size 2048;
# server_token tắt;
# server_name_hash_bucket_size 64;
# máy chủ_tên_trong_chuyển hướng tắt;
bao gồm /etc/nginx/mime.types;
ứng dụng default_type/octet-stream;
##
# Cài đặt SSL
##
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Bỏ SSLv3, tham khảo: POODLE
bật ssl_prefer_server_ciphers;
##
# Cài đặt ghi nhật ký
##
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
##
# Cài đặt Gzip
##
bật gzip;
# gzip_vary bật;
# gzip_proxied bất kỳ;
# gzip_comp_cấp 6;
# gzip_buffers 16 8k;
# gzip_http_version 1.1;
# văn bản gzip_types/văn bản thuần túy/ứng dụng css/ứng dụng json/văn bản javascript/ứng dụng xml/ứng dụng xml/xml+văn bản rss/javascript;
##
# Cấu hình máy chủ ảo
##
bao gồm /etc/nginx/conf.d/*.conf;
bao gồm /etc/nginx/sites-enabled/*;
# kích thước bài đăng tối đa
client_max_body_size 100M;
}
#email {
# # Xem tập lệnh xác thực mẫu tại:
# # http://wiki.nginx.org/ImapAuthenticateWithApachePhpScript
#
# # auth_http localhost/auth.php;
# # pop3_capabilities "TOP" "NGƯỜI DÙNG";
# # khả năng của imap "IMAP4rev1" "UIDPLUS";
#
# người phục vụ {
# nghe máy chủ cục bộ: 110;
# giao thức pop3;
# bật proxy;
# }
#
# người phục vụ {
# nghe localhost:143;
# hình ảnh giao thức;
# bật proxy;
# }
#}
/etc/nginx/sites-available/domain.com
người phục vụ {
nghe 443;
server_name domain.com;
gốc/đường dẫn/công khai;
add_header X-Frame-Options "SAMEORIGIN";
add_header X-Content-Type-Options "nosniff";
chỉ số index.php;
bộ ký tự utf-8;
địa điểm / {
try_files $uri $uri/ /index.php?$query_string;
}
vị trí = /favicon.ico { truy cập_đăng xuất; log_not_found tắt; }
vị trí = /robots.txt { access_log off; log_not_found tắt; }
error_page 404 /index.php;
vị trí ~ \.php$ {
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
bao gồm fastcgi_params;
}
vị trí ~ /\.(?! nổi tiếng).* {
Phủ nhận tất cả;
}
ssl trên;
ssl_certificate /etc/nginx/ssl/domain.com.chained.crt;
ssl_certificate_key /etc/nginx/ssl/domain.com.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
bật ssl_prefer_server_ciphers;
ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';
}
người phục vụ {
nghe 80;
server_name domain.com;
viết lại ^/(.*) https:// domain.com/$1 vĩnh viễn;
}
/etc/php/7.2/fpm/pool.d/www.conf
chỉ thị nhóm
[www]
người dùng = dữ liệu www
nhóm = dữ liệu www
nghe = /run/php/php7.2-fpm.sock
nghe.chủ sở hữu = dữ liệu www
nghe.group = dữ liệu www
chiều = động
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
Yêu cầu cURL PHP
riêng tư $headers = [
'Chấp nhận: ứng dụng/json',
'Loại nội dung: ứng dụng/json',
];
riêng tư $baseURL = 'http://otherdomain.in/api/v1/';
hàm riêng postRequest($data, $endpoint) {
nếu ( !is_null($this->apiToken) ) {
$authorization = "Ủy quyền: Người mang {$this->apiToken}";
array_push($this->headers, $authorization);
}
$url = "{$this->baseURL}/{$endpoint}";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HTTPHEADER, json_encode($this->headers) );
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_RETURNTTRASFER, TRUE);
$responseJSON = curl_exec($ch);
$response = json_decode($responseJSON, TRUE);
trả lại phản hồi $
}
CHỈNH SỬA 1:
tôi đã khởi động lại nhanhcgi
quá trình sử dụng sau đây truy vấn
$ sudo dịch vụ php7.2-fpm khởi động lại
$ sudo đuôi /var/log/php7.2-fpm.log
[13-Nov-2021 05:32:03] THÔNG BÁO: khoảng thời gian theo dõi systemd được đặt thành 10000 mili giây
[13-Tháng 11-2021 05:32:56] CẢNH BÁO: [pool www] con 28870 đã thoát ở tín hiệu 11 (SIGSEGV - bị đổ lõi) sau 53,229996 giây kể từ khi bắt đầu
[13-Nov-2021 05:32:56] THÔNG BÁO: [pool www] con 28879 bắt đầu
[13-Nov-2021 05:42:47] THÔNG BÁO: Chấm dứt ...
[13-Nov-2021 05:42:47] THÔNG BÁO: thoát, tạm biệt!
[13-Nov-2021 05:42:47] THÔNG BÁO: fpm đang chạy, pid 29564
[13-Nov-2021 05:42:47] THÔNG BÁO: sẵn sàng xử lý kết nối
[13-Nov-2021 05:42:47] THÔNG BÁO: khoảng thời gian theo dõi systemd được đặt thành 10000ms
[13-Tháng 11-2021 05:43:04] CẢNH BÁO: [pool www] con 29592 đã thoát ở tín hiệu 11 (SIGSEGV - bị đổ lõi) sau 17,115362 giây kể từ khi bắt đầu
[13-Nov-2021 05:43:04] THÔNG BÁO: [pool www] con 29596 bắt đầu
CHỈNH SỬA 2:
tôi đã tìm thấy rằng tôi opcache
đã bình luận rồi. Vì vậy, không có lý do gì để vô hiệu hóa hoặc tăng giới hạn bộ nhớ của nó như sau câu trả lời
/etc/php/7.2/fpm/php.ini
[opcache]
; Xác định xem Zend OPCache có được bật hay không
;opcache.enable=0
; Xác định xem Zend OPCache có được bật cho phiên bản CLI của PHP hay không
;opcache.enable_cli=0
; Kích thước bộ nhớ dùng chung của OPcache.
;opcache.memory_consumption=196