子目录下的多个目标的 apache(反向)代理 - 没有图像、CSS 等

子目录下的多个目标的 apache(反向)代理 - 没有图像、CSS 等

请帮助我解决以下问题,我已经困惑数周了。

由于我无法使用子域名,也无法访问 80 和 443 以外的其他端口,因此我必须将多个服务代理到我的域名的子目录中。这些服务要么在 Web 服务器本身上运行(显然在不同的端口下),要么在同一局域网中的其他机器上运行(可能还有其他端口)。

目标是:
example.com/app1 => localhost:8080
example.com/app2 => localhost:4711
example.com/app3 => 第二台机器
example.com/app4 => 第三台机器:8000

(所有不会被代理的内容最后都应该重写为 HTTPS,但我明白了。但如果它是必要的信息 - 现在你已经拥有它了。)

在过去的几周里,我已经尝试了几种不同的方法,包括 ProxyPass(Reverse)和 RewriteRules 的不同组合。

问题是,主页显示(不正确),但所有图片、CSS 等都缺失,并且链接不起作用。我希望在域的子目录下有完全代理的网站可用。

我无法为您提供我已经尝试过的所有方法的代码,但以下是我已经尝试过的一些组合:

    <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 "/solar-log/"
#       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

        <Location /solar-log>
                ProxyPass        http://192.168.x.z
                ProxyPassReverse http://192.168.x.z
        </Location>

#       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>

在本教程之后,最接近的是这种配置: 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/

        <Location /rhasspy/>
                ProxyPassReverse /
                ProxyHTMLEnable On
#               ProxyHTMLExtended On
                ProxyHTMLURLMap  /      /rhasspy/
                RequestHeader    unset  Accept-Encoding
        </Location>


        <Location /solar-log/>
                ProxyPassReverse /
                ProxyHTMLEnable On
#               ProxyHTMLExtended On
                ProxyHTMLURLMap  /      /solar-log/
                RequestHeader    unset  Accept-Encoding
        </Location>
</VirtualHost>

通过这种配置,网站可以加载更多内容,但最终无法真正工作(组合框为空或没有数据,一些内部内容无法工作并产生错误消息,等等......)

我已经阅读了几十个其他问题和教程,但没有一个能让我成功。例如: Apache 作为多个目标和一个默认目标的反向代理

所以我被困住了。
任何帮助都值得感激。
谢谢。

相关内容