nginx returns html instead of json response

Francis Daly francis at daoine.org
Thu Nov 17 17:26:33 UTC 2022


On Mon, Nov 14, 2022 at 08:24:15PM +0530, Kaushal Shriyan wrote:
> > On Fri, Nov 11, 2022 at 2:38 PM Francis Daly <francis at daoine.org> wrote:

Hi there,

> >> What one specific request do you want to make? (Maybe
> >> http://mydomain.com/apis, maybe http://mydomain.com/api/v1/*, maybe
> >> http://mydomain.com/api/v1/example, maybe something else?)
> >>
> >> For that one specific request, what do you want nginx to do with
> >> it? (Maybe make a http request to the Drupal system? Or a fastcgi request
> >> to the Drupal system? Or handle it internally withint nginx?)
> >>
> >> For the response from that request, what do you want nginx to do with
> >> it? (Send it to the user as-is? Mangle / modify it somehow? If so --
> >> how? Change the http response code or headers? Change the response body?)

> So I think, if somehow we can pass the information to Nginx to not take any
> action if 500 error occurred while hitting the
> https://mydrupalsite.com/apis or  https://mydrupalsite.com/apis/uinque_id
>  URLs then our job will done, because in that case whatever Drupal is
> sending we will be able to see that if 500 error occurred.

Correct.

You will want a location{} to handle the "api" requests; and in that
location, do not have the inherited "error_page 500" directive take effect.

I think that you cannot "undo" an error_page directive from a previous
level, but you can set a "dummy" error_page directive which will have
the effect of overriding any values set at a previous level. So --
pick a http response code that you do not care about (e.g. 555) and set
error_page for that in this location.


>From your config, it looks like there are three forms of "non-api"
requests that matter:

* /one/file.html - which will return the local file
/var/www/html/gsmamarketplace/web/one/file.html

* /two/file.php - which will ask drupal to use the local file
/var/www/html/gsmamarketplace/web/two/file.php

* /three/not-a-file - which will ask drupal to use the local file
/var/www/html/gsmamarketplace/web/index.php


What forms of "api" request do you expect to receive? And what,
specifically, do you want nginx to do with each form?

That is -- do you expect "/apis/one/file.html", or "/apis/two/file.php",
or "/apis/three/not-a-file", or some of each, or something else?

When the request is for "/apis/unique_id", what file on the filesystem
do you want nginx to serve; or what file on the filesystem do you want
nginx to ask drupal to use?

Cheers,

	f
-- 
Francis Daly        francis at daoine.org



More information about the nginx mailing list