Apache proxypass 将 css/js 传递到其特定的 URL

Apache proxypass 将 css/js 传递到其特定的 URL

我有两个后端套接字在端口 9000 和 9001 上运行。两者都提供带有 CSS、JS 和 PHP 的 WebUI。但这两个网站不同,当我对这两个网站都使用 proxypass 时,如何从请求的 URL 本身加载 css、js?

<VirtualHost *:80>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI}
</VirtualHost>

<VirtualHost *:443>
        ServerAdmin [email protected]
        ProxyRequests off
        DocumentRoot /var/www/html
        SSLProxyEngine on
        ProxyPreserveHost On
        SSLProxyVerify none
        SSLProxyCheckPeerCN off
        SSLProxyCheckPeerName off
        SSLProxyCheckPeerExpire off
#       ServerName _

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
# Possible values include: debug, info, notice, warn, error, crit, alert, emerg.
        LogLevel error

        SSLEngine on
        SSLCertificateFile /path/to/crt
        SSLCertificateKeyFile /path/to/key


        RewriteEngine on
        RewriteRule ^/site1$ /site1/ [R]

        ProxyPass /site1/  https://127.0.0.1:9000/
        ProxyPass /vendor/  https://127.0.0.1:9000/vendor
        ProxyPass /css/  https://127.0.0.1:9000/css
        ProxyRequests off
        ProxyHTMLURLMap https://127.0.0.1:9000/  /site1/
        ProxyHTMLExtended On
        <Location /site1/>
            ProxyPassReverse /
            ProxyHTMLEnable On
            ProxyPreserveHost On
            ProxyHTMLURLMap  /  /site1/
            RequestHeader    unset  Accept-Encoding
        </Location>

        RewriteRule ^/site2$ /site2/ [R]

        ProxyPass /site2/  https://127.0.0.1:9001/
        ProxyPass /vendor/  https://127.0.0.1:9001/vendor
        ProxyPass /css/  https://127.0.0.1:9001/css
        ProxyRequests off
        ProxyHTMLURLMap https://127.0.0.1:9001/  /site2/
        ProxyHTMLExtended On
        <Location /site2/>
            ProxyPassReverse /
            ProxyHTMLEnable On
            ProxyPreserveHost On
            ProxyHTMLURLMap  /  /site2/
            RequestHeader    unset  Accept-Encoding
        </Location>

</VirtualHost>

正如你在上面看到的,我添加了

ProxyPass /vendor/  https://127.0.0.1:9000/vendor
ProxyPass /css/  https://127.0.0.1:9000/css

这两行都用于手动将 CSS、供应商文件传递到代理 URL。但我如何才能对 site2 做同样的事情呢?由于上面添加了 /css,因此在 site2 中我从 site1 本身获取 css 内容。此外,为了使站点中的所有超链接都具有 /site1/ 和 /site2/ 路径,我在它们两个中都添加了 ProxyHTMLURLMap / /site2/ 行。它起作用了。但不确定为什么 CSS、JS 文件仍然转到 / 根路径,因为根路径没有任何文件并给出 404。我如何才能使这些内部调用 CSS、JS 文件也采用前缀 /site1/ 或 /site2/

如果没有任何 ProxyHTMLURLMap / /site2/,所有链接都会给出 404,因为请求针对的是 / 而不是 /site2/ 我也想对 CSS/JS 文件执行同样的事情。

相关内容