Hi David, 2017-08-29 17:41 GMT+02:00 David Mugnai <d...@gnx.it>:
> Hi, > > I'm trying to configure a virtual host that, based on the host name, > forwards the request on a backend server listening on an unix socket. > > My apache version is 2.4.18 as shipped by Ubuntu 16.04 > > The configuration I've tried so far is: > > <VirtualHost *:80> > ServerAdmin webmaster@localhost > DocumentRoot /var/www/html > LogLevel trace2 > > UseCanonicalName Off > > RewriteEngine On > RewriteCond %{HTTP_HOST} ^(.+)\.example.com > RewriteRule "(.*)" "unix:/home/user/%1/server.sock|http://127.0.0.1$1 > [P,NE] > > ErrorLog ${APACHE_LOG_DIR}/error.log > CustomLog ${APACHE_LOG_DIR}/access.log combined > </VirtualHost> > > The rewrite module works as expected (in the log file I can see the full > path to the unix socket), but trying to access the web server results in > a "400 Bad Request" *without* the involvment of the backend server. > > I made a test with ProxyPass directive, and it works, but obviously is > not what I want: > > <VirtualHost *:80> > ServerAdmin webmaster@localhost > DocumentRoot /var/www/html > LogLevel trace2 > > UseCanonicalName Off > > ProxyPass / unix:/home/user/subdomain1/server.sock| > http://127.0.0.1/ > ProxyPassReverse / unix:/home/user/subdomain1/server.sock| > http://127.0.0.1/ > > ErrorLog ${APACHE_LOG_DIR}/error.log > CustomLog ${APACHE_LOG_DIR}/access.log combined > </VirtualHost> > > How can I fix it? > Didn't have much time to try this use case manually but I have a couple of suggestions: 1) Do you find any log in the error_log that could give us some clue about the 400 returned? (maybe increasing the LogLevel to debug or trace) 2) Have you tried https://httpd.apache.org/docs/2.4/mod/mod_proxy.html#proxypassmatch ? Luca