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
Fri Dec 16 18:23:40 UTC 2022
Hi Maxim,
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.
Best Regards,
Kaushal
On Fri, Dec 16, 2022 at 7:22 AM Kaushal Shriyan <kaushalshriyan at gmail.com>
wrote:
>
>
> On Fri, Dec 16, 2022 at 1:38 AM Maxim Dounin <mdounin at mdounin.ru> wrote:
>
>> 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"}}';
>> }
>>
>>
> Thanks Maxim for the suggestion. I will try it out and keep you posted
> with the testing as it progresses. I am obliged to this mailing list.
> Thanks in advance.
>
> Best Regards,
>
> Kaushal
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.nginx.org/pipermail/nginx/attachments/20221216/bfaf48dd/attachment-0001.htm>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: nginxtest.conf
Type: application/octet-stream
Size: 7363 bytes
Desc: not available
URL: <http://mailman.nginx.org/pipermail/nginx/attachments/20221216/bfaf48dd/attachment-0001.obj>
More information about the nginx
mailing list