Beefy Boxes and Bandwidth Generously Provided by pair Networks
Think about Loose Coupling
 
PerlMonks  

502 Bad Gateway Error with ModPerl scripts

by thunders (Priest)
on Sep 29, 2003 at 14:42 UTC ( #294972=perlquestion: print w/ replies, xml ) Need Help??
thunders has asked for the wisdom of the Perl Monks concerning the following question:

I'm trying to get a mod_perl enabled server running from my home PC. The way it's set up currently I have a server on port 80 for static requests, and another on port 8200 for mod_perl.

I have apache set up to send requests to the http://myhost/perl/ subdirectory to my mod_perl server, with this rewrite rule:

<IfDefine PERLPROXIED> <IfModule mod_rewrite.c> RewriteEngine on RewriteRule ^proxy:.* - [F] RewriteRule ^(.*\/perl\/.*)$ http://%{HTTP_HOST}:8200$1 [P] RewriteRule ^(.*\/cgi-perl\/.*)$ http://%{HTTP_HOST}:8200$1 [P] </IfModule> </IfDefine>

This works when I connect from a computer on my home network, but If I try to call the scripts from the internet. I get a "502 Bad Gateway" Error. I assume it is because the %{HTTP_HOST} variable is filled in with a router assigned internal IP.

I think I need to set up a different rewrite rule for external requests. Does anyone know how to do that?

Comment on 502 Bad Gateway Error with ModPerl scripts
Download Code
Re: 502 Bad Gateway Error with ModPerl scripts
by zby (Vicar) on Sep 29, 2003 at 15:10 UTC
    How about not using the %{HTTP_HOST} variable but hardcoding the address? This of course would apply only if you have just one address but for a home PC I would expect that.
      That's my plan for external requests, but then it wouldn't work right for internal stuff. I'm not sure if I can tell apache to use a different rule for requests coming from 192.168.0.* I'm sure there's a way.

        If you're proxying requests, your Web server will be making the connection, so the hostname needs to be something your Web server can connect to. It could be as simple as hardcoding in 127.0.0.1.

        My suspicion is that when you're browsing internally, you're doing something like http://192.168.1.1, so when Apache rewrites the address to proxy, it connects to 192.168.1.1. When you're coming from the outside, you're visiting http://www.example.com. Apache rewrites the address, tries to connect to www.example.com, gets the IP address of the public side of the NAT, and can't connect to it. If that's the case, another solution is split horizon DNS, so that inside your network www.example.com resolves to 192.168.1.1, while outside it resolves to your external NAT address.

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: perlquestion [id://294972]
Approved by jdtoronto
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others making s'mores by the fire in the courtyard of the Monastery: (7)
As of 2014-09-15 10:16 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    My favorite cookbook is:










    Results (146 votes), past polls