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 Location /CUFSE 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/ /Location 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 bobtf...@bobtfish.net 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 Location /CUFSE 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/ /Location 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 Location /CUFSE 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/ /Location 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/