Upstream service php-fpm is up and running but reports {"errors": {"status_code": 502,"status": "php-fpm server is down"}}

Kaushal Shriyan kaushalshriyan at gmail.com
Wed Jan 4 17:23:23 UTC 2023


Hi Maxim,

I have tested using the attached nginx.conf file for your reference. I
tested using both scenarios.

When MySQL DB is down it works as expected.

{"errors": "MySQL DB Server is down"}

MySQL DB is up and running

It reports  {"errors": "MySQL DB Server is down"} in spite of MySQL DB
server being fine.

Please suggest. Thanks in advance.

Best Regards,

Kaushal


On Thu, Dec 22, 2022 at 7:04 AM Maxim Dounin <mdounin at mdounin.ru> wrote:

> Hello!
>
> On Tue, Dec 20, 2022 at 11:44:05PM +0530, Kaushal Shriyan wrote:
>
> > On Sat, Dec 17, 2022 at 3:48 AM Maxim Dounin <mdounin at mdounin.ru> wrote:
> >
> > > On Fri, Dec 16, 2022 at 11:53:40PM +0530, Kaushal Shriyan wrote:
> > >
> > > > I have a follow up question regarding the settings below in
> nginx.conf
> > > > where the php-fpm upstream server is processing all php files for
> Drupal
> > > > CMS.
> > > >
> > > > fastcgi_intercept_errors off
> > > > proxy_intercept_errors off
> > > >
> > > > User -> Nginx -> php-fpm -> MySQL DB.
> > > >
> > > > For example if the php-fpm upstream server is down then nginx should
> > > render
> > > > 502 bad gateway
> > > >                      if MySQL DB service is down then nginx should
> render
> > > > 500 ISE.
> > > >
> > > > Is there a way to render any of the messages or any custom messages
> to
> > > the
> > > > User from the php-fpm upstream server that should be passed to a
> client
> > > > without being intercepted by the Nginx web server. Any examples? I
> have
> > > > attached the file for your reference. Please guide me. Thanks in
> advance.
> > >
> > > Not sure I understand what are you asking about.
> > >
> > > With fastcgi_intercept_errors turned off (the default) nginx does
> > > not intercept any of the errors returned by php-fpm.
> > >
> > > That is, when MySQL is down and php-fpm returns 500 (Internal
> > > Server Error), it is returned directory to the client.  When
> > > php-fpm is down, nginx generates 502 (Bad Gateway) itself and
> > > returns it to the client.
> > >
> > >
> > Hi Maxim,
> >
> > Apologies for the delay in responding. I am still not able to get it. The
> > below settings will be hardcoded in nginx.conf. Is there a way to
> > dynamically render the different errors to the client when the client
> hits
> > http://mydomain.com/apis
> >
> > error_page 502 /502.json;
> >
> >     location = /502.json {
> >         return 200 '{"errors": {"status_code": 502, "status": "php-fpm
> > server is down"}}';
> >     }
> >
> > Please guide me. Thanks in advance.
>
> You can pass these error pages to a backend server by using
> proxy_pass or fastcgi_pass in the location, much like any other
> resource in nginx.
>
> Note though that in most cases it's a bad idea, at least unless
> you have a dedicated backend to generate error pages: if a request
> to an upstream server failed, there is a good chance that another
> request to generate an error page will fail as well.
>
> As such, it is usually recommended to keep error pages served by
> nginx itself, either as static files, or directly returned with
> "return".
>
> --
> Maxim Dounin
> http://mdounin.ru/
> _______________________________________________
> nginx mailing list
> nginx at nginx.org
> https://mailman.nginx.org/mailman/listinfo/nginx
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.nginx.org/pipermail/nginx/attachments/20230104/98c0276b/attachment-0001.htm>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: nginxtest.conf
Type: application/octet-stream
Size: 7893 bytes
Desc: not available
URL: <http://mailman.nginx.org/pipermail/nginx/attachments/20230104/98c0276b/attachment-0001.obj>


More information about the nginx mailing list