Apache2 的 HTML 重定向问题

Apache2 的 HTML 重定向问题

我在 Ubuntu 上的 Apache 服务器上遇到了 ProxyPass 问题。我已配置 Apache 来处理服务器上的虚拟主机。服务器上有一个应用程序正在运行,并使用端口 8001 8002。我需要执行类似操作www.example.com/demo/origin来显示我访问时会看到的内容www.example.com:8000。要显示的内容是一系列 HTML 页面。

这是虚拟主机配置中存在问题的部分

ProxyPass /demo/vader http://www.example.com:8001/  
ProxyPassReverse /demo/vader http://www.example:8001/  

ProxyPass /demo/skywalker http://www.example.com:8002/  
ProxyPassReverse /demo/skywalker http://www.example.com:8002/

现在当我访问时example.com/demo/skywalker,我看到的是端口 8002 的第一个页面,即该login.html页面。

第二个应该是www.example.com/demo/skywalker/userAction.html,但服务器显示www.example.com:8000/login.html。在错误日志中,我看到类似以下内容:

[Mon Nov 11 18:01:20 2013] [debug] mod_proxy_http.c(1850): proxy: HTTP: FILE NOT FOUND /htdocs/js/demo.72fbff3c9a97f15a4fff28e19b0de909.min.js  

我的系统中没有任何文件夹 htdocs。

这只是在查看.html页面时出现的问题。否则不会出现此类问题。

当我访问时,localhost:8001它将显示所有内容,没有任何错误或问题。

www.example.com/demo/skywalker显示单独的网页

www.example.com/demo/origin显示不同的网页

www.example.com/demo/vader显示不同的网页。

我也尝试过另一种组合,

<Location /demo/origin/>
  ProxyPass http://localhost:8000/
  ProxyPassReverse http://localhost:8000/
  ProxyHTMLURLMap http://localhost:8000/ /
</Location>

这也失败了。

如果有人能帮助我解决这个问题,我将不胜感激。

答案1

那么就 Apache reeves prosing 而言,您是否也进行了这些设置?

# Proxy specific settings
ProxyRequests Off
ProxyPreserveHost On

我之所以询问,是因为错误是由于 JavaScript 文件未加载造成的。CORS不允许 JavaScript 加载来自同一域的内容。并且在向或发出请求时ProxyPreserveHost会保留example.comwww.example.com:8001www.example.com:8002

编辑:尝试一个更具体的例子。我建议你重做你的代理逻辑并尝试一下。

# Settings for adding a trailing slash to the URL
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/(demo)$
RewriteRule ^(.*)$ http://%{HTTP_HOST}$1/ [R=301,L]

# Settings for Apache Reverse Proxying
<IfModule mod_proxy.c>

  # Proxy specific settings
  ProxyRequests Off
  ProxyPreserveHost On

  <Proxy *>
    AddDefaultCharset off
    Order deny,allow
    Allow from all
  </Proxy>

  ProxyPass /demo/vader http://www.example.com:8001/  
  ProxyPassReverse /demo/vader http://www.example:8001/  

  ProxyPass /demo/skywalker http://www.example.com:8002/  
  ProxyPassReverse /demo/skywalker http://www.example.com:8002/

</IfModule>

相关内容