Upstream service php-fpm is up and running but reports {"errors": {"status_code": 502,"status": "php-fpm server is down"}}
Maxim Dounin
mdounin at mdounin.ru
Thu Dec 15 20:08:15 UTC 2022
Hello!
On Thu, Dec 15, 2022 at 09:53:11PM +0530, Kaushal Shriyan wrote:
>
> I am running the nginx version: nginx/1.22 as a reverse proxy server on
> CentOS Linux release 7.9.2009 (Core). When I hit http://mydomain.com/apis I
> see the below message on the browser even if the upstream server php-fpm
> server is up and running.
>
> *{"errors": {"status_code": 502,"status": "php-fpm server is down"}}*
>
> I have set the below in the nginx.conf file and attached the file for your
> reference.
>
> if ($upstream_http_content_type = "") {
> add_header 'Content-Type' 'application/json' always;
> add_header 'Content-Type-3'
> $upstream_http_content_type$isdatatypejson"OK" always;
> return 502 '{"errors": {"status_code": 502,"status":
> "php-fpm server is down"}}';
> }
The "if" directive makes it possible to conditionally select
configuration to handle a request, and therefore can only use
information available before the request is handled. In your
case, before the request is sent to the upstream server. See
http://nginx.org/en/docs/http/ngx_http_rewrite_module.html for
more details.
As such, $upstream_http_content_type will be always empty, since
there are no upstream response yet, and therefore the
configuration will always return 502. This matches your
observations.
An obvious fix would be to remove the configuration chunk in
question.
Instead, you probably need something like:
error_page 502 /502.json;
location = /502.json {
return 200 '{"errors": {"status_code": 502, "status": "php-fpm server is down"}}';
}
Hope this helps.
--
Maxim Dounin
http://mdounin.ru/
More information about the nginx
mailing list