Exposing external JSON API in an Nginx custom path?

Francis Daly francis at daoine.org
Sun Nov 11 20:36:03 UTC 2018

On Sun, Nov 11, 2018 at 03:55:06PM +0000, Moorage via nginx wrote:

Hi there,

> 	curl -i http://mesh.example.com:8080
> 		HTTP/1.1 302 Found
> 		Location: /mesh-ui/
> 		Content-Length: 0
> I want to expose that UI at an Nginx site custom path.
> 	https://example.com/mesh

So you want the request to nginx of "/mesh/" to become a request to your
upstream server of "/"?

It can be done; however, I suggest that you will find things easier
to reverse-proxy if you can configure the mesh server to expect that
its root is /mesh/, so that it exposes its api at /mesh/api/v1 and it
redirects to /mesh/mesh-ui/

> 		location ~ /mesh/ {

"~" is not "starts with". You probably want "^~" there instead.

> 			proxy_pass http://meshproxy;

If you want the request to upstream to be "/mesh/", use that. Otherwise, use

  proxy_pass http://meshproxy/;

> 			proxy_redirect off;

You probably do not want that. Perhaps "proxy_redirect default;"; perhaps
something else based on whatever the mesh service actually returns. From
your example, you may want

  proxy_pass / /mesh/;

Good luck with it,

Francis Daly        francis at daoine.org

More information about the nginx mailing list