Hello John, http://httpd.apache.org/docs/2.4/mod/mod_proxy_fcgi.html If you want to serve http://your.virtual.srv/info to fpm-php you have to configure ProxyPassMatch ^/info$ fcgi://127.0.0.1:9015/httpd/iliffe/ and put the file "info" into the directory "/httpd/iliffe/". Another example: To serve http://your.virtual.srv/myapp/info.php configure ProxyPassMatch "^/myapp/.*\.php(/.*)?$" fcgi://127.0.0.1:9015/httpd/iliffe/ and put info.php into /httpd/iliffe/myapp/ One more example: If you have /httpd/iliffe/i_phpinfo.php an the config is ProxyPassMatch "^/.*\.php(/.*)?$" fcgi://127.0.0.1:9015/httpd/iliffe/ you can request http://your.virtual.srv/i_phpinfo.php The match of the url must be equal to the filesystem beyond DocumentRoot. DocumentRoot must be specified in "fcgi://127.0.0.1:..." If you want to serve http://your.virtual.srv/info from /httpd/iliffe/i_phpinfo.php you have to rewrite "info" first (not tested): RewriteRule ^/info$ /i_phpinfo.php [P] ProxyPassMatch "^/.*\.php(/.*)?$" fcgi://127.0.0.1:9015/httpd/iliffe/ Hope this helps. regards, Christian On Wed, May 17, 2017 at 10:59:38AM -0400, John Iliffe wrote: > Hi Christian: > > It didn't work and I think there is something that I am failing to > understand here so, with your forbearance, let me explain my set up and > what I'm actually trying to do. I got a "Not Found" error when I tried > your suggestion. > > Configuration: > > on directory /httpd are the document root directories for as number of > virtual hosts. My test server, www.iliffe.ca, for example, has document > root on /httpd/iliffe. There is a PHP script there called i_phpinfo.php. > > For testing purposes, I am using the minimalist matching line suggested in > the php-fpm wiki entry: > > ProxyPassMatch ^/info$ fcgi://127.0.0.1:9000/var/www/info.php > > which, on this machine, translates to: > > ProxyPassMatch ^/info$ fcgi://127.0.0.1:9015/httpd/iliffe/i_phpinfo.php > > My understanding is that this should match "http://www.iliffe.ca/info" and > nothing else, and that it should pass exactly "httpd/iliffe/i_phpinfo.php" > to the TCP socket 127.0.0.1:9015 . That isn't what showed up in the > trace as you have noted. Specifically, the original "info" was passed as > the script to be executed which is not what I would have expected. > > According to the wiki, the absolute path to the script is the bit following > the socket number in the ProxyPassMatch directive and that is exactly the > script path/location on this machine. > > From the wiki: > ------------- > /path/to/your/documentroot/ > > IMPORTANT! This must exactly match the real filesystem location of your php > files, because that is where the php-fpm daemon will look for them. > php-fpm just interprets the php files passed to it; it is not a web server, > nor does it understand your web servers' namespace, virtualhost layout, or > aliases. > -------------- > > So, what am I missing? To me this looks like it should send everything > that ends in "info" to the phpinfo script on the document root directory. > > Regards, > > John > =================================== > > On Wednesday 17 May 2017 03:31:01 Christian Hettler wrote: > > hello John, > > > > a Proxy-request didn't rewrite the url. > > > > If you have http://my.example.com/myapp/script.php > > then you can configure with ProxyPassMatch: > > > > ProxyPassMatch "^/myapp/.*\.php(/.*)?$" "fcgi://localhost:9000/var/www/" > > > > where script.php is located at /var/www/myapp/script.php > > The parenthesis above aren't used to remember anything but to match > > everything after ".php". > > > > The layout of the directory within the fcgi environment must match > > the layout of the url path. > > > > One more excerpt from the manual: > > > > " > > The following example passes the request URI as a filesystem path for > > the PHP-FPM daemon to run. The request URL is implicitly added to the > > 2nd parameter. The hostname and port following fcgi:// are where > > PHP-FPM is listening. Connection pooling is enabled. PHP-FPM > > > > ProxyPassMatch "^/myapp/.*\.php(/.*)?$" "fcgi://localhost:9000/var/www/" > > enablereuse=on > > > > " > > > > In your environment you can request http://your.server/i_phpinfo.php > > > > regards, > > > > Christian > > > > On Tue, May 16, 2017 at 12:05:06PM -0400, John Iliffe wrote: > > > Hi Eric: > > > > > > I'm a bit slow-witted I guess, in any event, I now have strace > > > installed and I ran it to get the attached trace file. > > > > > > It's seems to me that the problem is in the call: (about 250 lines > > > before the end of the file at time stamp 11:39:16) > > > > > > 18767 11:39:16 lstat("/httpd/iliffe/i_phpinfo.php/info", > > > 0x7fff1d6b4f90) = -1 ENOTDIR (Not a directory) > > > > > > where the path information from the initial call is being appended to > > > the correct path information in the second parameter of > > > ProxyPassMatch. (???) > > > > > > FYI, the configuration directive is: > > > > > > ProxyPassMatch ^/info$ > > > fcgi://127.0.0.1:9015/httpd/iliffe/i_phpinfo.php > > > > > > so I don't understand why this would happen. > > > > > > So, over to you. > > > > > > Regards, > > > > > > John > > > ======================================== > > > > > > On Sunday 14 May 2017 11:42:53 Eric Covener wrote: > > > > On Sat, May 13, 2017 at 11:01 PM, John Iliffe <john.iliffe@xxxxxxxxx> > wrote: > > > > > Sure: > > > > > > > > > > ---------------------- > > > > > # namei -m /httpd/iliffe/i_phpinfo.php > > > > > f: /httpd/iliffe/i_phpinfo.php > > > > > > > > > > dr-xr-xr-x / > > > > > drwxr-xr-x httpd > > > > > drwxr-xr-x iliffe > > > > > -rw-r--r-- i_phpinfo.php > > > > > > > > > > ---------------------- > > > > > > > > There's something odd about that code/logging (no parameter on the > > > > open call repesenting the name!) Can you strace the FPM process and > > > > see what it actually tries to open? > > > > > > > > -------------------------------------------------------------------- > > > > - To unsubscribe, e-mail: users-unsubscribe@xxxxxxxxxxxxxxxx > > > > For additional commands, e-mail: users-help@xxxxxxxxxxxxxxxx --------------------------------------------------------------------- To unsubscribe, e-mail: users-unsubscribe@xxxxxxxxxxxxxxxx For additional commands, e-mail: users-help@xxxxxxxxxxxxxxxx