Puncte:1

Eroare nginx 502 pentru apelul API din aplicație, dar lucrează în cererea de poștaș și curl

drapel ht

Mediu inconjurator:

  • Versiunea Laravel: 5.8.29
  • Versiunea PHP $ php --versiune: PHP 7.2.24 (cli)
  • Versiunea NGINX $ nginx -v: versiunea nginx: nginx/1.14.0 (Ubuntu)

Declarație problemă:

Totul funcționează bine, cu excepția unui anume API în care includ în antet un simbol (tipic purtător) și returnează o eroare 502 din Chrome (în fila de rețea)

Cu toate acestea, când încerc să sun acest lucru de la Postman sau folosind răsuci cerere cli de la server, returnează datele corect.

Ce ar putea fi în neregulă aici?


Eroare

Gateway greșit NGINX 502

Bușteni

$ sudo tail -30 /var/log/nginx/error.log
[eroare] 4713#4713: *705118 recv() a eșuat (104: Resetarea conexiunii de către peer) în timp ce citiți antetul răspunsului din amonte, client: 111.11.11.111, server: domain.com, cerere: „POST /action/api/path HTTP/1.1”, în amonte: „fastcgi://unix:/var/run/php/php7.2-fpm.sock:”, gazdă: „domain.com”, referitor: „domain.com/path”

$ sudo tail /var/log/php7.2-fpm.log
AVERTISMENT: [pool www] copilul 28524 a ieșit pe semnalul 11 ​​(SIGSEGV - miez descarcat) după 
ANUNȚ: [pool www] copilul 8033 a pornit

Fișiere și configurație:

/etc/nginx/nginx.conf

utilizator www-date;
worker_proceses auto;
pid /run/nginx.pid;
includ /etc/nginx/modules-enabled/*.conf;

evenimente {
    conexiuni_muncitor 768;
    # multi_accept on;
}

http {

    ##
    # Setări de bază
    ##

    sendfile activat;
    tcp_nopush activat;
    tcp_nodelay activat;
    keepalive_timeout 65;
    types_hash_max_size 2048;
    # server_tokens off;

    # server_names_hash_bucket_size 64;
    # server_name_in_redirect off;

    includ /etc/nginx/mime.types;
    aplicație de tip_default/octet-stream;

    ##
    # Setări SSL
    ##

    ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Eliminarea SSLv3, ref: POODLE
    ssl_prefer_server_ciphers activat;

    ##
    # Setări de înregistrare
    ##

    access_log /var/log/nginx/access.log;
    error_log /var/log/nginx/error.log;

    ##
    # Setări Gzip
    ##

    gzip on;

    # gzip_vary on;
    # gzip_proxied orice;
    # gzip_comp_level 6;
    # gzip_buffers 16 8k;
    # gzip_http_version 1.1;
    # gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;

    ##
    # Configurații gazdă virtuală
    ##

    includ /etc/nginx/conf.d/*.conf;
    includ /etc/nginx/sites-enabled/*;

    # dimensiune maximă a postării
    client_max_body_size 100M;
}


#Poștă {
# # Vezi exemplu de script de autentificare la:
# # http://wiki.nginx.org/ImapAuthenticateWithApachePhpScript
# 
# # auth_http localhost/auth.php;
# # pop3_capabilities „TOP” „USER”;
# # imap_capabilities „IMAP4rev1” „UIDPLUS”;
# 
#   Server {
# asculta localhost:110;
# protocol pop3;
# proxy activat;
#}
# 
#   Server {
# asculta localhost:143;
# protocol imap;
# proxy activat;
#}
#}

/etc/nginx/sites-available/domain.com

Server {
    asculta 443;
    nume_server domeniu.com;
    rădăcină /cale/public;

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

    index index.php;

    set de caractere utf-8;

    Locație / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    locație = /favicon.ico { access_log off; log_not_found off; }
    locație = /robots.txt { access_log off; log_not_found off; }

    eroare_page 404 /index.php;

    locație ~ \.php$ {
        fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
        include fastcgi_params;
    }

    locație ~ /\.(?!cunoscut).* {
        nega totul;
    }

    ssl activat;
    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;
    ssl_prefer_server_ciphers activat;
    ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';

}

Server {
    asculta 80;
    nume_server domeniu.com;
    rescrie ^/(.*) https :// domain.com/$1 permanent;
}

/etc/php/7.2/fpm/pool.d/www.conf Directive pool

[www]

utilizator = www-data
grup = www-data

asculta = /run/php/php7.2-fpm.sock

listen.owner = www-data
listen.group = www-data

pm = dinamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3

Solicitare PHP cURL

private $headers = [
    „Accept: application/json”,
    „Tip de conținut: aplicație/json”,
];

private $baseURL = 'http://otherdomain.in/api/v1/';


funcție privată postRequest($date, $endpoint) {

    dacă ( !is_null($this->apiToken) ) {

        $authorization = "Autorizare: Purtător {$this->apiToken}";
        array_push($this->headers, $autorizare);
    }

    $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, $date);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);

    $responseJSON = curl_exec($ch);

    $răspuns = json_decode($responseJSON, TRUE);

    returnează $response
}

EDITARE 1:

Am repornit fastcgi proces folosind următoarele interogare

$ sudo service php7.2-fpm reporniți

$ sudo tail /var/log/php7.2-fpm.log
[13-Nov-2021 05:32:03] ANUNȚ: intervalul de monitorizare systemd setat la 10000ms
[13-Nov-2021 05:32:56] AVERTISMENT: [pool www] copilul 28870 a ieșit la semnalul 11 ​​(SIGSEGV - core duped) după 53,229996 secunde de la pornire
[13-Nov-2021 05:32:56] ANUNȚ: [pool www] copilul 28879 a început
[13-Nov-2021 05:42:47] ANUNȚ: Încheierea...
[13-Nov-2021 05:42:47] ANUNȚ: ieșire, la revedere!
[13-Nov-2021 05:42:47] ANUNȚ: fpm rulează, pid 29564
[13-Nov-2021 05:42:47] ANUNȚ: gata să gestioneze conexiunile
[13-Nov-2021 05:42:47] ANUNȚ: intervalul de monitorizare systemd setat la 10000ms
[13-Nov-2021 05:43:04] AVERTISMENT: [pool www] copilul 29592 a ieșit pe semnalul 11 ​​(SIGSEGV - core duped) după 17.115362 secunde de la pornire
[13-Nov-2021 05:43:04] ANUNȚ: [pool www] copilul 29596 a început

EDITARE 2:

Am găsit că al meu opcache este deja un comentariu. Așadar, nu are rost să dezactivați sau să creșteți limita de memorie, după cum urmează Răspuns

/etc/php/7.2/fpm/php.ini

[opcache]
; Stabilește dacă Zend OPCache este activat
;opcache.enable=0

; Stabilește dacă Zend OPCache este activat pentru versiunea CLI a PHP
;opcache.enable_cli=0

; Dimensiunea de stocare a memoriei partajate OPcache.
;opcache.memory_consumption=196

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.