mod_perl - separate PERL interpreter for each LocationMatch
2011-09-12 07:22:57 GMT
Hi All,
I have written a mod_perl proxy server which redirects the HTTP traffic to a webserver.
I have pasted the snippet below.
In the apache worker thread, is enable. In the httpd.conf two <LocationMatch> are configured
http://ipaddress/path1/
http://ipaddress/path2/
After starting the http server if i open any URL from the browser, same “TEST_VAR” is being printed
for both the URLs.
If I call path1 first, then for both the URLs 100 is printed.
If I call path2 first, then for both the URLs 200 is printed.
(that is its taking the first called Path, after httpd is started)
#----------------------------Startup.pl --------------------------------------------#
#startup.pl
use lib qw(/home/test1/libs);
1;
#---------------------------------
#---------------------------- httpd.conf---------------------------------------------#
# httpd.conf
PerlRequire /home/test1/startup.pl
#http://ipaddress/path1/
<LocationMatch /path1/>
SetEnvIf Request_URI "/" TEST_VAR=100
SetHandler perl-script
PerlResponseHandler Module::Test
</LocationMatch>
#http://ipaddress/path2/
<LocationMatch /path2/>
SetEnvIf Request_URI "/" TEST_VAR=200
SetHandler perl-script
PerlResponseHandler Module::Test
</LocationMatch>
#-------------------------------------------------------------------------------#
#---------------------------- Test.pm ---------------------------------------------#
# Test.pm
package Module::Test;
use strict;
use Apache2::Const qw(:methods :http :common);
use Apache2::Log ();
use Apache2::URI ();
my $param = env_variable();
sub handler
{
Apache2::ServerRec::warn($param);
print "Value".$param;
return Apache2::Const::OK;
}
sub env_variable
{
# Configuration loading from a file during startup
my $endpointURL = $ENV{'TEST_VAR'};
return $endpointURL;
}
1;
#--------------------------------------------------------------------------------
But I tried with <VirtualHost> option and it is working fine as PerlOptions +Parent is present.
But since the port numbers are different firefox will now allow simulataneous access to
both URL from same webpage.
#http://ipaddress:8080/path1/
<VirtualHost *:8080>
SetEnvIf Request_URI "/" TEST_VAR=100
PerlRequire /home/test1/startup.pl
PerlOptions +Parent
<LocationMatch /path2/>
SetHandler perl-script
PerlResponseHandler Module::Test
</LocationMatch>
</VirtualHost>
#http://ipaddress:8085/path2/
<VirtualHost *:8085>
SetEnvIf Request_URI "/" TEST_VAR=200
PerlRequire /home/test1/startup.pl
PerlOptions +Parent
<LocationMatch /path2/>
SetHandler perl-script
PerlResponseHandler Module::Test
</LocationMatch>
</VirtualHost>
Please help me with this, Thanks in advance.
Regards,
uttam
RSS Feed