I've been attempting to test the uds support on 2.4.x with the uds patch (<
http://people.apache.org/~jim/patches/uds-2.4.patch>).

I'm assuming HTTP works (it would appear based on the mailing list that the
author has been tested it with HTTP). However, when I try using fcgi the
socket appears to be lost somewhere.

Example config line:

ProxyPass / unix:/var/run/php/php-fpm.sock|fcgi://localhost/www/

And the error log with debugging on (browsing to http://localhost/index.php
):

[proxy:debug] [pid 30127:tid 140367020521216] proxy_util.c(1773): AH00925:
initializing worker unix:/var/run/php/php-fpm.sock|fcgi://localhost/www/
shared
[proxy:debug] [pid 30127:tid 140367020521216] proxy_util.c(1815): AH00927:
initializing worker unix:/var/run/php/php-fpm.sock|fcgi://localhost/www/
local
[[proxy:debug] [pid 30127:tid 140367020521216] proxy_util.c(1850): AH00930:
initialized pool in child 30127 for (localhost) min=0 max=64 smax=64
[proxy_fcgi:debug] [pid 30116:tid 140366778955520] mod_proxy_fcgi.c(73):
[client 66.192.178.3:54534] AH01060: set r->filename to
proxy:fcgi://localhost:8000/www/index.php
[proxy:debug] [pid 30116:tid 140366778955520] mod_proxy.c(1104): [client
66.192.178.3:54534] AH01143: Running scheme fcgi handler (attempt 0)
[proxy_fcgi:debug] [pid 30116:tid 140366778955520] mod_proxy_fcgi.c(764):
[client 66.192.178.3:54534] AH01076: url:
fcgi://localhost:8000/www/index.php proxyname: (null) proxyport: 0
[proxy_fcgi:debug] [pid 30116:tid 140366778955520] mod_proxy_fcgi.c(774):
[client 66.192.178.3:54534] AH01078: serving URL
//localhost:8000/www/index.php
[proxy:debug] [pid 30116:tid 140366778955520] proxy_util.c(2101): AH00942:
FCGI: has acquired connection for (*)
[proxy:debug] [pid 30116:tid 140366778955520] proxy_util.c(2176): [client
66.192.178.3:54534] AH00944: connecting //localhost:8000/www/index.php to
localhost:8000
[proxy:debug] [pid 30116:tid 140366778955520] proxy_util.c(2311): [client
66.192.178.3:54534] AH00947: connected /www/index.php to localhost:8000
[proxy:error] [pid 30116:tid 140366778955520] (111)Connection refused:
AH00957: FCGI: attempt to connect to 127.0.0.1:8000 (*) failed
[proxy_fcgi:error] [pid 30116:tid 140366778955520] [client
66.192.178.3:54534] AH01079: failed to make connection to backend: localhost
[proxy:debug] [pid 30116:tid 140366778955520] proxy_util.c(2139): AH00943:
FCGI: has released connection for (*)

If I switch from fcgi to http, I get a log that's a bit different and see
some lines which lead me to believe the uds is simply lost somewhere in the
fcgi setup that it isn't in the http setup (this errors out as the socket
is expecting fcgi, not http):

ProxyPass / unix:/var/run/php/php-fpm.sock|http://localhost/www/

[proxy:debug] [pid 30707:tid 139930058049280] proxy_util.c(1773): AH00925:
initializing worker unix:/var/run/php/php-fpm.sock|http://localhost/www/shared
[proxy:debug] [pid 30707:tid 139930058049280] proxy_util.c(1815): AH00927:
initializing worker unix:/var/run/php/php-fpm.sock|http://localhost/www/local
[proxy:debug] [pid 30707:tid 139930058049280] proxy_util.c(1850): AH00930:
initialized pool in child 30707 for (localhost) min=0 max=64 smax=64
[proxy:debug] [pid 30721:tid 139929963685632] mod_proxy.c(1104): [client
66.192.178.3:54544] AH01143: Running scheme http handler (attempt 0)
[proxy:debug] [pid 30721:tid 139929963685632] proxy_util.c(2101): AH00942:
HTTP: has acquired connection for (localhost)
[proxy:debug] [pid 30721:tid 139929963685632] proxy_util.c(2115): AH02545:
HTTP: has determined UDS as /var/run/php/php-fpm.sock
[proxy:debug] [pid 30721:tid 139929963685632] proxy_util.c(2176): [client
66.192.178.3:54544] AH00944: connecting http://localhost/www/index.php to
localhost:80
[proxy:debug] [pid 30721:tid 139929963685632] proxy_util.c(2311): [client
66.192.178.3:54544] AH00947: connected /www/index.php to localhost:80
[proxy:error] [pid 30721:tid 139929963685632] (2)No such file or directory:
AH02454: HTTP: attempt to connect to Unix domain socket
/var/run/php/php-fpm.sock (localhost) failed
[proxy:error] [pid 30721:tid 139929963685632] AH00959:
ap_proxy_connect_backend disabling worker for (localhost) for 60s
[proxy_http:error] [pid 30721:tid 139929963685632] [client
66.192.178.3:54544] AH01114: HTTP: failed to make connection to backend:
localhost
[proxy:debug] [pid 30721:tid 139929963685632] proxy_util.c(2139): AH00943:
HTTP: has released connection for (localhost)

Note in this case the line "HTTP: has determined UDS as
/var/run/php/php-fpm.sock" which is missing from the fcgi case.

Digging through the code is proving difficult for me to trace where the
path for fcgi breaks down vs http.


As an aside, I'm fairly certain that in the case of a fcgi something to the
effect of:
unix:/var/run/php/php-fpm.sock|fcgi:///www/

... should be a valid configuration, however this results in the following
error:

[proxy_fcgi:error] [pid 31259:tid 140608094070528] [client
66.192.178.3:54554] AH01059: error parsing URL //: Invalid host/port

--
Kyle Johnson

Reply via email to