Rewriting location directive by upstream servers

Francis Daly francis at daoine.org
Tue Sep 30 18:56:36 UTC 2014


On Fri, Sep 26, 2014 at 10:12:47AM +0530, thunder hill wrote:
> On Fri, Sep 26, 2014 at 2:35 AM, Francis Daly <francis at daoine.org> wrote:
> > On Fri, Sep 26, 2014 at 01:20:18AM +0530, thunder hill wrote:

Hi there,

> > > When I access mysite.com/app1 the upstream server rewrites the url like
> > > mysite.com/login instead of mysite.com/app1/login and  the result is a
> > > blank page.
> > >
> > > Users are allowed either mysite.com/app1 or mysite.com/app2. In both the
> > > cases app1 and app2 are getting rewritten with login or some other
> > > extension. How to solve this issue.?
> >
> > I believe that the easiest way, if you want both to be available via
> > the same hostname, is to install-or-configure app1 on backend1 to be
> > available below the url /app1/, not below /.

> Thats the easiest way. Unfortunately there is no control over backend
> server(s).

I believe the next easiest thing to do is to change the requirements,
so that users access http://app1.mysite.com or http://app2.mysite.com
instead of http://mysite.com/app1/ or http://mysite.com/app2/.

You can allow initial access to http://mysite.com/app1/, and would
issue a http redirect to http://app1.mysite.com, and have the server{}
listening for that name proxy_pass to one backend.

> Just a thought:
> Is there a way to keep the url  mysite.com/app1 and go on with
> mysite.com/app1/login. That means backend server can only rewrite the
> strings after  mysite.com/app1

That depends (almost) entirely on the backend; but if you do not control
it, I would be surprised if you can make it do this.

(To my mind, if you don't control the backend, you don't reverse proxy
to it. But that is probably not a universal opinion.)

	f
-- 
Francis Daly        francis at daoine.org



More information about the nginx mailing list