我有两个后端套接字在端口 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 文件执行同样的事情。