Điểm:1

lỗi nginx 502 đối với cuộc gọi api từ ứng dụng nhưng hoạt động trong yêu cầu người đưa thư và cuộn tròn

lá cờ ht

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

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.