1

Environment:

  • Laravel Version: 5.8.29
  • PHP Version $ php --version: PHP 7.2.24 (cli)
  • NGINX Version $ nginx -v: nginx version: nginx/1.14.0 (Ubuntu)

Problem Statement:

Everything works fine, except for one particular API where I include in the header some token (typical bearer token) and it's returning a 502 error from Chrome (in the network tab)

However, when I try to call this from Postman or using curl cli request from server, it's returning the data correctly.

What could be possibly wrong here?


Error

NGINX 502 Bad Gateway

Logs

$ sudo tail -30 /var/log/nginx/error.log [error] 4713#4713: *705118 recv() failed (104: Connection reset by peer) while reading response header from upstream, client: 111.11.11.111, server: domain.com, request: "POST /action/api/path HTTP/1.1", upstream: "fastcgi://unix:/var/run/php/php7.2-fpm.sock:", host: "domain.com", referrer: "domain.com/path" $ sudo tail /var/log/php7.2-fpm.log WARNING: [pool www] child 28524 exited on signal 11 (SIGSEGV - core dumped) after NOTICE: [pool www] child 8033 started 

Files & Configuration:

/etc/nginx/nginx.conf

user www-data; worker_processes auto; pid /run/nginx.pid; include /etc/nginx/modules-enabled/*.conf; events { worker_connections 768; # multi_accept on; } http { ## # Basic Settings ## sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; types_hash_max_size 2048; # server_tokens off; # server_names_hash_bucket_size 64; # server_name_in_redirect off; include /etc/nginx/mime.types; default_type application/octet-stream; ## # SSL Settings ## ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE ssl_prefer_server_ciphers on; ## # Logging Settings ## access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log; ## # Gzip Settings ## gzip on; # gzip_vary on; # gzip_proxied any; # 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; ## # Virtual Host Configs ## include /etc/nginx/conf.d/*.conf; include /etc/nginx/sites-enabled/*; # max post size client_max_body_size 100M; } #mail { # # See sample authentication script at: # # http://wiki.nginx.org/ImapAuthenticateWithApachePhpScript # # # auth_http localhost/auth.php; # # pop3_capabilities "TOP" "USER"; # # imap_capabilities "IMAP4rev1" "UIDPLUS"; # # server { # listen localhost:110; # protocol pop3; # proxy on; # } # # server { # listen localhost:143; # protocol imap; # proxy on; # } #} 

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

server { listen 443; server_name domain.com; root /path/public; add_header X-Frame-Options "SAMEORIGIN"; add_header X-Content-Type-Options "nosniff"; index index.php; 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_pass unix:/var/run/php/php7.4-fpm.sock; fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name; include fastcgi_params; } location ~ /\.(?!well-known).* { deny all; } ssl on; 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 on; ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH'; } server { listen 80; server_name domain.com; rewrite ^/(.*) https :// domain.com/$1 permanent; } 

/etc/php/7.2/fpm/pool.d/www.conf Pool directives

[www] user = www-data group = www-data listen = /run/php/php7.2-fpm.sock listen.owner = www-data listen.group = www-data pm = dynamic pm.max_children = 5 pm.start_servers = 2 pm.min_spare_servers = 1 pm.max_spare_servers = 3 

PHP cURL request

private $headers = [ 'Accept: application/json', 'Content-Type: application/json', ]; private $baseURL = 'http://otherdomain.in/api/v1/'; private function postRequest($data, $endpoint) { if ( !is_null($this->apiToken) ) { $authorization = "Authorization: Bearer {$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_RETURNTRANSFER, TRUE); $responseJSON = curl_exec($ch); $response = json_decode($responseJSON, TRUE); return $response } 

EDIT 1:

I've restarted fastcgi process using following query

$ sudo service php7.2-fpm restart $ sudo tail /var/log/php7.2-fpm.log [13-Nov-2021 05:32:03] NOTICE: systemd monitor interval set to 10000ms [13-Nov-2021 05:32:56] WARNING: [pool www] child 28870 exited on signal 11 (SIGSEGV - core dumped) after 53.229996 seconds from start [13-Nov-2021 05:32:56] NOTICE: [pool www] child 28879 started [13-Nov-2021 05:42:47] NOTICE: Terminating ... [13-Nov-2021 05:42:47] NOTICE: exiting, bye-bye! [13-Nov-2021 05:42:47] NOTICE: fpm is running, pid 29564 [13-Nov-2021 05:42:47] NOTICE: ready to handle connections [13-Nov-2021 05:42:47] NOTICE: systemd monitor interval set to 10000ms [13-Nov-2021 05:43:04] WARNING: [pool www] child 29592 exited on signal 11 (SIGSEGV - core dumped) after 17.115362 seconds from start [13-Nov-2021 05:43:04] NOTICE: [pool www] child 29596 started 

EDIT 2:

I've found that my opcache is already comment. So there is no point of disabling or increasing its memory limit as per following answer

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

[opcache] ; Determines if Zend OPCache is enabled ;opcache.enable=0 ; Determines if Zend OPCache is enabled for the CLI version of PHP ;opcache.enable_cli=0 ; The OPcache shared memory storage size. ;opcache.memory_consumption=196 

0

You must log in to answer this question.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.