Nginx dynamic proxy_pass keeps redirecting to wrong domain

Ruben rdocter at gmail.com
Thu Nov 16 20:59:49 UTC 2017


I am using the following config:

http {
    server {
        listen 80;

        location / {
          resolver 127.0.0.11;

          auth_request /auth;
          auth_request_set $instance $upstream_http_x_instance;

          proxy_pass http://$instance;
        }

        location = /auth {
          internal;
          proxy_pass http://auth;
          proxy_pass_request_body off;
          proxy_set_header Content-Length "";
          proxy_set_header X-Original-URI $request_uri;
        }
    }
}

I want to auth all routes (location /) to this server. It is a content
server.

The proxy_pass http://auth; call does the real authentication and is a Go
Lang server. The response in this requests sets also a header X-Instance.
Which reflects a name of a docker service, for example instance-001.

If authentication succeeds auth_request_set is set with the value of the
header X-Instance for example instance-001.

Now I want to serve content from this instance by utilizing proxy_pass
http://$instance;. Now I have read a lot about dynamic proxy_pass and what
to do, but nothing succeeds.

The problem is, when I go to http://example.com/cdn/test/test.jpg in the
browser, it redirects me to http://instance-001/cdn/test/test.jpg. Which is
ofcourse not correct. It should proxy the docker service with name
instance-001.

I have looked into proxy_redirect but for me it isn't clear how to set it
correctly. I also tries a rewrite like rewrite ^(/.*) $1 break; in location
= /auth. But still have the annoying redirect to
http://instance-001/cdn/test/test.jpg. I've been struggling with this for a
very long time now and I also can't find a solid solution.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.nginx.org/pipermail/nginx/attachments/20171116/0b5bbb18/attachment.html>


More information about the nginx mailing list