Re: [Catalyst] X-Forwarded-Path

2012-11-11 Thread Brad Bowman

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

2012-10-11 Thread Stephen Shorrock
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

2012-10-10 Thread Tomas Doran
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/