0

Please help me with the following problem on which I'm stuck for weeks now.

As I can't use subdomains and also can't access other Ports then 80 and 443, I have to proxy several services to subdirectories of my domain. The services are either running on the webserver itself (under different ports, obviously) or on other machines in the same lan (perhaps other ports too).

Goal is:
example.com/app1 => localhost:8080
example.com/app2 => localhost:4711
example.com/app3 => 2nd-machine
example.com/app4 => 3rd-machine:8000

(Everything that won't be proxied should be rewritten to HTTPS at the end, but I got that. But if it's a neccessary piece of information - now you have it.)

I tried several different approaches already over the last couple of weeks, including different combinations of ProxyPass(Reverse) and RewriteRules.

Problem is, that the main pages are shown (improperly), but alle the images, the CSS and so on are missing and the links are not working. I would like to have fully proxied websites available under subdirectories of the domain.

I can't give you code for all the things I've already tried, but here are some of the combinations, I've already tried:

    <VirtualHost 192.168.x.y:80>
        ServerName example.com
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

    RewriteEngine on

    RewriteCond %{SERVER_NAME} =example.com
    RewriteRule ^/solar-log(.*)  http://192.168.x.z$1 [P,L]
    ProxyPassReverse /solar-log/  http://192.168.x.z


RewriteCond %{SERVER_NAME} =example.com

RewriteRule ^/solar-log/(.*) http://192.168.x.z/$1 [P,QSA]

ProxyPassReverse /solar-log http://192.168.x.z

    RewriteRule ^/rhasspy/(.*)       http://localhost:4711/$1 [P,L]

RewriteRule ^/rhasspy/(js|img|css)(.*) http://localhost:4711/$1$1 [P]

ProxyPass /rhasspy http://localhost:4711/

    ProxyPassReverse /rhasspy/       http://localhost:4711

ProxyPassReverseCookiePath / /rhasspy

ProxyPassReverseCookieDomain localhost localhost

ProxyPass / http://localhost:4711/

ProxyPassReverse / http://localhost:4711/

RewriteRule ^/$ /rhasspy/ [P,L]

    # Redirect to HTTPS, except the URIs, that point to other servers/services, that don't have HTTPS

RewriteCond %{SERVER_NAME} =example.com

RewriteCond %{REQUEST_URI} !^/solar-log [NC]

RewriteCond %{REQUEST_URI} !^/rhasspy [NC]

RewriteCond %{REQUEST_URI} !^/home-assistant [NC]

RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [NE,R=permanent]

    #RewriteBase &quot;/solar-log/&quot;

RewriteRule ^/solar-log(.*) http://192.168.x.z$1 [P,QSA]

ProxyPassReverse /solar-log http://192.168.x.z

    RewriteRule         ^/(.*) http://127.0.0.1/$1 [P,L]
    ProxyPassReverse    / http://127.0.0.1

    &lt;Location /solar-log&gt;
            ProxyPass        http://192.168.x.z
            ProxyPassReverse http://192.168.x.z
    &lt;/Location&gt;

ProxyPreserveHost On

    ProxyPass        /airsonic  http://localhost:8080
    ProxyPassReverse /airsonic  http://localhost:8080

ProxyPass /rhasspy/ http://localhost:4711/

ProxyPassReverse /rhasspy/ http://localhost:4711/

    ProxyPass        /home-assistant  http://localhost:8000
    ProxyPassReverse /home-assistant  http://localhost:8000

</VirtualHost>

The closest was this configuration, after this tutorial: http://www.apachetutor.org/admin/reverseproxies

<VirtualHost 192.168.x.y:80>
        ServerName example.com
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

    ProxyRequests off

    ProxyPass       /rhasspy/       http://127.0.0.1:4711/
    ProxyHTMLURLMap http://127.0.0.1:4711/         /rhasspy

    ProxyPass       /solar-log/     http://solar-log/
    ProxyHTMLURLMap http://solar-log/               /solar-log/

    &lt;Location /rhasspy/&gt;
            ProxyPassReverse /
            ProxyHTMLEnable On

ProxyHTMLExtended On

            ProxyHTMLURLMap  /      /rhasspy/
            RequestHeader    unset  Accept-Encoding
    &lt;/Location&gt;


    &lt;Location /solar-log/&gt;
            ProxyPassReverse /
            ProxyHTMLEnable On

ProxyHTMLExtended On

            ProxyHTMLURLMap  /      /solar-log/
            RequestHeader    unset  Accept-Encoding
    &lt;/Location&gt;

</VirtualHost>

With that configuration, the websites loaded a bit more content, but did't really work in the end (combo boxes where empty/had no data in them, some internal stuff didn't work and produced error messages, and so on...)

I've already read dozens of other questions and tutorials, but none of them led me to success. For example: Apache as reverse proxy for multiple destinations and one default destination

So I'm stuck.
Any help appreciated.
Thanks.

0 Answers0