HI Andre I used to use "perl-script", but this time round, performance is not a critical factor to consider, but rather the "backward compatibility", so a plain cgi script suffices.
Regards, Jie > Date: Sun, 11 Jun 2017 11:57:25 +0200 > From: "André Warnier (tomcat)" <a...@ice-sa.com> > To: modperl@perl.apache.org > Subject: Re: mod_perl and cgi-script handler > User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:38.0) Gecko/20100101 > Thunderbird/38.5.0 > > Addendum : > > This is independent of the other previous explanations. > > If your cgi-bin scripts happen to be written in perl, then you would get a > rather important *response* performance improvement by using > > <Directory /var/www/my-server-name/cgi-bin> > SetHandler perl-script > PerlResponseHandler ModPerl::Registry > .. > </Directory> > > That is because then, the first time your script is called, mod_perl would > compile it, and save the (pre-)compiled code in memory. And the next time > your script is called, the Apache-embedded perl interpreter would just run > the pre-compiled code. > > One drawback is memory : each of the Apache "children" will now store a > pre-compiled copy of every perl cgi-bin script that has been run since this > child was started. But if your scripts are run many times, the performance > improvement is really dramatic. > > > On 11.06.2017 11:36, André Warnier (tomcat) wrote: > >Hi. > > > >Now that you mention this, I believe that the original "mistake" in your > >configuration > >was the > > > ><Directory /var/www/my-server-name/cgi-bin> > >.. > > SetHandler modperl > >.. > ></Directory> > > > >and by just taking that line out, you would have the same effect (without > >the <FilesMatch>). > >SetHandler is the line which originally overrides the effect of > >"ScriptAlias". > > > >You do not need "SetHandler modperl" in order to do the authentication via > >your module. > >The "PerlAuthenHandler" is all that is needed. > > > >SetHandler applies to the Apache response-generation phase, which comes > >later than the AAA > >phase. > > > >To explain this in another way : > > > >What you are now doing below is : > > > >1) ScriptAlias /cgi-bin/ "/var/www/my-server-name/cgi-bin/" > > > >That does the same as : > >Alias /cgi-bin/ "/var/www/my-server-name/cgi-bin/" > >plus > ><Directory /var/www/my-server-name/cgi-bin/> > > SetHandler cgi-script > ><Directory> > > > >It sets the Apache response-generating module to be mod_cgi, instead of the > >default (which > >serves static pages). > >See : > >http://httpd.apache.org/docs/2.4/mod/mod_alias.html#scriptalias > >http://httpd.apache.org/docs/2.4/mod/mod_cgi.html > > > >2) SetHandler modperl > > > >This overrides the "cgi-script" response handler which you set above, to set > >mod_perl > >instead. mod_perl would now expect an additional directive > >PerlResponseHandler (some perl sub/method). > >See : http://perl.apache.org/docs/2.0/user/config/config.html#C_SetHandler_ > > > >3) <FilesMatch> > > SetHandler cgi-script > > > >By doing this, you are resetting the response handler again, from mod_perl > >back to > >cgi-script (mod_cgi). > > > > > >So instead, if you just omit > > SetHandler modperl > > > >it would be simpler, and just as effective. > > > >And if you want even more info about what is happening, see the following : > >https://perl.apache.org/docs/2.0/user/handlers/http.html > >(Note : the AAA part there is outdated for Apache 2.4) > > > >On 11.06.2017 01:47, Jie Gao wrote: > >>It seemed "SetHandler" in the mod_perl section overwrote the settings for > >>cgi-script. > >>Adding the following to the directory stanza fixed the problem: > >> > >> <FilesMatch .*> > >> SetHandler cgi-script > >> </FilesMatch> > >> > >>.. > >> > >>Regards, > >> > >> > >>Jie > >> > >> > >> > >>* Jie Gao <j....@sydney.edu.au> wrote: > >> > >>>Date: Fri, 9 Jun 2017 20:35:43 +1000 > >>>From: Jie Gao <j....@sydney.edu.au> > >>>To: modperl@perl.apache.org > >>>Subject: mod_perl and cgi-script handler > >>>User-Agent: Mutt/1.5.24 (2015-08-30) > >>> > >>>Hi All > >>> > >>>I have run into a problem with CGI under mod_perl, and I can't get my head > >>>around it. > >>> > >>>I wanted to put a "cgi-bin" directory under my > >>>authentication/authorisation handlers, > >>>but while authen/authz works fine (debug showing access granted), the > >>>directory is in > >>>the end not handled by "cgi-script", the default cgid content handler, and > >>>the text of > >>>the cgi script gets displayed instead. > >>> > >>>My configuration is like the following: > >>> > >>>#------------------------------------------------------------ > >>> > >>>PerlAddAuthzProvider my_User W::W::Authnz->authz > >>> > >>><VirtualHost _default_:443> > >>>... > >>>ScriptAlias /cgi-bin/ "/var/www/my-server-name/cgi-bin/" > >>> > >>><Directory /var/www/my-server-name/cgi-bin> > >>> AllowOverride None > >>> > >>># PerlOptions +SetupEnv > >>># Options +ExecCGI > >>># SetHandler modperl > >>># PerlAuthenHandler W::W::Authnz->authen > >>># AuthType mytype > >>># AuthName 'myname' > >>># <RequireAll> > >>># Require my_User mylogin > >>># Require ip 10.65. > >>># </RequireAll> > >>></Directory> > >>> > >>></VirtualHost> > >>> > >>>#------------------------------------------------------------ > >>> > >>>If I comment out, as above, all the mod_perl configurations, and then add > >>>"Require all > >>>granted" to the directory stanza, the cgi scripts will run normally. > >>> > >>>Any tips/pointers as to where else I should look would be much appreciated. > >>> > >>>Regards, > >>> > >>> > >>> > >>>Jie > >>> > >> > > >