Re: [Catalyst] X-Forwarded-Path
On 11/10/12 00:34, Stephen Shorrock wrote: I'm trying to run an application behind a frontend proxy where the path at the front end is not route: config on frontend.mydomain.ac.uk RewriteEngine On RewriteCond %{REMOTE_USER} (.+) RewriteRule . - [E=RU:%1] RequestHeader set REMOTE_USER %{RU}e RequestHeader set X-Forwarded-Path '/CUFSE' ProxyPass http://backend.mydomain.ac.uk:5000/ ProxyPassReverse http://backend.mydomain.ac.uk:5000/ On the backend my application is run via starman and has contained in its configuration: __PACKAGE__->config( name => 'CUFSE', using_frontend_proxy => 1, ... I would there for expect that when calling $c->uri_for('some/path') I would get: http://frontend.mydomain.ac.uk/CUFSE/some/path but the frontend portion of the path is not there instead I only have: http://frontend.mydomain.ac.uk/some/path I've attempted to grep all Perl modules for /X[_-]Forwarded[_-]Path/i but with no joy. [..] (source of method: http://wiki.catalystframework.org/wiki/wikicookbook/frontendproxy) A belated plug for Plack::Middleware::ReverseProxyPath (although it sounds like your problem is solved). http://search.cpan.org/~bowmanbs/Plack-Middleware-ReverseProxyPath-0.03/lib/Plack/Middleware/ReverseProxyPath.pm I've not tried using this with Catalyst, but it's PSGI middleware so should be fine. I use the following header names: X-Forwarded-Script-Name The front-end prefix being forwarded FROM. This is the replacement. The value of SCRIPT_NAME on the front-end. X-Traversal-Path The back-end prefix being forwarded TO. This is to be replaced. This is the part of the back-end URI that is just plumbing which should be hidden from the app. X-Forwarded-Script-Name follows the X-Forwarded-* pattern established by other headers (the SCRIPT_NAME on the front end) and matches PSGI names. X-Traversal-Path was inspired by a similar Python/wsgi middleware. However, I'd like to use the defacto standard names, if they exist. Is X-Forwarded-Path in common use? I might also add support for X-Request-Base and a combined middleware similar to Catalyst::TraitFor::Request::ProxyBase, thanks for the inspiration. Brad ___ List: Catalyst@lists.scsys.co.uk Listinfo: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst Searchable archive: http://www.mail-archive.com/catalyst@lists.scsys.co.uk/ Dev site: http://dev.catalyst.perl.org/
Re: [Catalyst] X-Forwarded-Path
Thanks t0m, I installed your module and it works great - thanks for writing etc. I guess what I may have been pertaining to is that X-Forwarded-Path using_frontend_proxy doesn't seem to be implemented although on the 'official'? wiki (http://wiki.catalystframework.org/wiki/wikicookbook/frontendproxy) it is documented. Best wishes Stephen On Wed, Oct 10, 2012 at 5:41 PM, Tomas Doran wrote: > You're not doing anything wrong - there just isn't a common spec for doing > this.. > > You probably want to be using Catalyst::TraitFor::Request::ProxyBase, which I > wrote specifically for this use-case however :) > > Cheers > t0m > > On 10 Oct 2012, at 14:34, Stephen Shorrock wrote: > >> Hi, >> >> Catalyst 5.90011 >> >> I'm trying to run an application behind a frontend proxy where the >> path at the front end is not route: >> >> config on frontend.mydomain.ac.uk >> >> >> RewriteEngine On >> RewriteCond %{REMOTE_USER} (.+) >> RewriteRule . - [E=RU:%1] >> RequestHeader set REMOTE_USER %{RU}e >> RequestHeader set X-Forwarded-Path '/CUFSE' >> ProxyPass http://backend.mydomain.ac.uk:5000/ >> ProxyPassReverse http://backend.mydomain.ac.uk:5000/ >> >> >> On the backend my application is run via starman and has contained in >> its configuration: >> >> __PACKAGE__->config( >> name => 'CUFSE', >> using_frontend_proxy => 1, >> ... >> >> I would there for expect that when calling $c->uri_for('some/path') I would >> get: >> >> http://frontend.mydomain.ac.uk/CUFSE/some/path >> >> but the frontend portion of the path is not there instead I only have: >> >> http://frontend.mydomain.ac.uk/some/path >> >> I've attempted to grep all Perl modules for /X[_-]Forwarded[_-]Path/i >> but with no joy. >> >> Is the passing of the path supported or am I doing something incorrectly >> >> (source of method: >> http://wiki.catalystframework.org/wiki/wikicookbook/frontendproxy) >> >> Thanks in advance >> >> Stephen >> >> ___ >> List: Catalyst@lists.scsys.co.uk >> Listinfo: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst >> Searchable archive: http://www.mail-archive.com/catalyst@lists.scsys.co.uk/ >> Dev site: http://dev.catalyst.perl.org/ > ___ List: Catalyst@lists.scsys.co.uk Listinfo: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst Searchable archive: http://www.mail-archive.com/catalyst@lists.scsys.co.uk/ Dev site: http://dev.catalyst.perl.org/
Re: [Catalyst] X-Forwarded-Path
You're not doing anything wrong - there just isn't a common spec for doing this.. You probably want to be using Catalyst::TraitFor::Request::ProxyBase, which I wrote specifically for this use-case however :) Cheers t0m On 10 Oct 2012, at 14:34, Stephen Shorrock wrote: > Hi, > > Catalyst 5.90011 > > I'm trying to run an application behind a frontend proxy where the > path at the front end is not route: > > config on frontend.mydomain.ac.uk > > > RewriteEngine On > RewriteCond %{REMOTE_USER} (.+) > RewriteRule . - [E=RU:%1] > RequestHeader set REMOTE_USER %{RU}e > RequestHeader set X-Forwarded-Path '/CUFSE' > ProxyPass http://backend.mydomain.ac.uk:5000/ > ProxyPassReverse http://backend.mydomain.ac.uk:5000/ > > > On the backend my application is run via starman and has contained in > its configuration: > > __PACKAGE__->config( > name => 'CUFSE', > using_frontend_proxy => 1, > ... > > I would there for expect that when calling $c->uri_for('some/path') I would > get: > > http://frontend.mydomain.ac.uk/CUFSE/some/path > > but the frontend portion of the path is not there instead I only have: > > http://frontend.mydomain.ac.uk/some/path > > I've attempted to grep all Perl modules for /X[_-]Forwarded[_-]Path/i > but with no joy. > > Is the passing of the path supported or am I doing something incorrectly > > (source of method: > http://wiki.catalystframework.org/wiki/wikicookbook/frontendproxy) > > Thanks in advance > > Stephen > > ___ > List: Catalyst@lists.scsys.co.uk > Listinfo: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst > Searchable archive: http://www.mail-archive.com/catalyst@lists.scsys.co.uk/ > Dev site: http://dev.catalyst.perl.org/ ___ List: Catalyst@lists.scsys.co.uk Listinfo: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst Searchable archive: http://www.mail-archive.com/catalyst@lists.scsys.co.uk/ Dev site: http://dev.catalyst.perl.org/