httpd-bugs mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From bugzi...@apache.org
Subject [Bug 51517] mod_proxy_fcgi is not RFC 3875 compliant
Date Wed, 03 Dec 2014 10:23:57 GMT
https://issues.apache.org/bugzilla/show_bug.cgi?id=51517

--- Comment #9 from Stefan Rubner <stefan@whocares.de> ---
Jérôme,

Right now it's the other way round. PATH_INFO is correct while SCRIPT_NAME
isn't 100% correct. An example:

If I call http://127.0.0.1/this/is/my/test.php/more/path/info?var=1234

the (shortened) output of the perl script you used will be:

=== Proxy Balancer ===

$VAR1 = {
          'SCRIPT_NAME' => '/this/is/my/test.php/more/path/info',
          'PATH_INFO' => '/more/path/info?var=1234',
          'SCRIPT_FILENAME' =>
'proxy:balancer://php5fpm/var/www/html/this/is/my/test.php/more/path/info?var=1234',
          'SERVER_SOFTWARE' => 'Apache/2.4.10 (Debian)',
          'QUERY_STRING' => 'var=1234',
          'BALANCER_WORKER_NAME' => 'fcgi://127.0.0.1:9000/',
          'DOCUMENT_ROOT' => '/var/www/html',
          'PATH_TRANSLATED' => '/var/www/html/more/path/info?var=1234',
          'REQUEST_URI' => '/this/is/my/test.php/more/path/info?var=1234',
        };


=== Proxy FCGI ===

$VAR1 = {
          'SCRIPT_NAME' => '/this/is/my/test.php/more/path/info',
          'PATH_INFO' => '/more/path/info?var=1234',
          'SCRIPT_FILENAME' =>
'proxy:fcgi://127.0.0.1:9000/this/is/my/test.php/more/path/info',
          'SERVER_SOFTWARE' => 'Apache/2.4.10 (Debian)',
          'QUERY_STRING' => 'var=1234',
          'DOCUMENT_ROOT' => '/var/www/html',
          'PATH_TRANSLATED' => '/var/www/html/more/path/info?var=1234',
          'REQUEST_URI' => '/this/is/my/test.php/more/path/info?var=1234',
        };

The main question is whether PHP-FPM could "live" with that state of the
SCRIPT_NAME env var and whether the others would be fine. I guess I could fix
SCRIPT_NAME as well if need be.

As for the prefixing of SCRIPT_FILENAME with "proxy:(fcgi|balancer):": Looking
at the Apache code I think I see why they're doing it and I think they do it
wrong for the wrong reasons: It looks like Apache is trying to determine
whether an incoming request actually is a proxy request using these prefixes
and if it isn't while Apache is in the "mod_proxy_*" execution path, a request
will be declined. Personally I disagree with this behavior because imo any
request that comes in should be served as long it is a valid HTTP 1.0/1.1
request. But since I think it will be hard to convince the Apache project of
that view and since there's already a fix for the the "proxy:fcgi:" route in
PHP-FPM I guess it would be easier to also fix the "proxy:balancer:" stuff on
PHP's side.

-Stefan

-- 
You are receiving this mail because:
You are the assignee for the bug.
---------------------------------------------------------------------
To unsubscribe, e-mail: bugs-unsubscribe@httpd.apache.org
For additional commands, e-mail: bugs-help@httpd.apache.org


Mime
View raw message