Bug 1136290

Summary: SetHandler to proxy support
Product: Red Hat Enterprise Linux 7 Reporter: Remi Collet <rcollet>
Component: httpdAssignee: Luboš Uhliarik <luhliari>
Status: CLOSED ERRATA QA Contact: Martin Frodl <mfrodl>
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: 7.1CC: dani-rh, isenfeld, jkaluza, jorton, mfrodl, ozy, rik.theys
Target Milestone: rc   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: httpd-2.4.6-24.el7 Doc Type: Enhancement
Doc Text:
Feature: Add support for using SetHandler together with mod_proxy. Reason: There was no way to use SetHandler with mod_proxy to configure it to use proxy for the incoming requests. This is useful for using for example php-fpm with event or worker MPM. Result: SetHandler directive has been improved to allow setting proxy as a handler in, for example, following format: SetHandler "proxy:fcgi://127.0.0.1:9000".
Story Points: ---
Clone Of:
: 1136906 (view as bug list) Environment:
Last Closed: 2015-03-05 07:13:10 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On:    
Bug Blocks: 1136906    

Description Remi Collet 2014-09-02 09:40:52 UTC
The simple and common way to enable PHP support in Apache http server is using mod_php and

    SetHandler application/x-httpd-php

Using httpd with worker or event MPM doesn't have support for mod_php
With RHSCL various PHP versions are available, but only one mod_php can be enabled.

The solution is to use php-fpm and mod_proxy_fcgi.

But configuration, to redirect PHP script to FPM, requires to use ProxyPass(Match) which is really not simple.

As ProxyPass is evaluated in the very beginning of an http request, it don't honours alias or htaccess rules.

SetHandler is evaluated at the very end of an http request.

httpd 2.4.10 have SetHandler to proxy support which allow to use 

    SetHandler "proxy:fcgi://127.0.0.1:9000"

Please consider backporting this great feature in RHEL

For memory, commit in fedora (at 2.4.9 time)
http://pkgs.fedoraproject.org/cgit/httpd.git/commit/?id=5b3da1ff0f24d6da3394e65c24656ab77dada3b3

Comment 6 Orsiris de Jong 2014-12-11 22:03:40 UTC
Using php-fpm with actual httpd 2.4.6 package needs use of ProxyPassMatch directive which can lead to malicious code execution.
Example:

Using the following directive:
ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/path/to/your/documentroot

Malicious code injection:
/uploads/malicious.jpg/lalalaalala.php will lead php-fpm to execute malicious.jpg (source https://wiki.apache.org/httpd/PHP-FPM )

Might the SetHanlder enhancement be considered as a security enhancement and therefore backported ?

Regards,
Ozy.

Comment 8 errata-xmlrpc 2015-03-05 07:13:10 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory, and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

https://rhn.redhat.com/errata/RHSA-2015-0325.html