Apache 反向代理重写获取 URL

Apache 反向代理重写获取 URL

我有一台无法从公众访问的内联网服务器。此外,我还有一台运行 Apache 反向代理的服务器。

内联网:intranet.domain.com 反向代理:external.domain.com

这是我的配置

<VirtualHost *:443>
    ServerName       external.domain.com
    ErrorLog /var/log/apache2/reverseproxy-error-log
    CustomLog /var/log/apache2/reverseproxy-access-_log combined
    LogLevel          warn
    AddDefaultCharset utf-8
   
  
      SSLEngine On
      SSLProxyEngine On
      SSLProxyVerify none
      SSLProxyCheckPeerCN off
      SSLProxyCheckPeerName off
      ProxyRequests Off
      ProxyPreserveHost On
  
       <Proxy *>
         Require all granted
       </Proxy>
  
    Forwarding Intranet to external
          ProxyPass / https://intranet.domain.com/
          ProxyPassReverse / https://intranet.domain.com/
  
       ProxyErrorOverride Off
  </VirtualHost>

我删除了设置 SSL 证书等的部分,因为这不是问题

当我现在加载 external.domain.com 时,网站正在加载,但所有图片和 css 都未加载,因为它是从 intranet.domain.com 加载的,所以我得到 404。

例如,我看到的是一个 GET 请求。

scheme
    https
host
    intranet.domain.com
filename
    /fileadmin/user_upload/Admin/Header/Header_Telefon.jpg

所以我现在的问题是如何重写该请求以便主机external.domain.com代替intranet.domain.com

因为当我尝试这个网址时https://external.domain.com/fileadmin/user_upload/Admin/Header/Header_Telefon.jpg我可以毫无问题地看到该图像。

答案1

您需要配置在 internal.domain.com 上运行的应用程序,以便它只生成相对 URL,或使用域 external.domain.com 的 URL。Apach 的 proxypassreverse 无法更改响应主体内的 URL。

相关内容