如何将Windows 2.2上的Apache 2.2重定向到Tomcat(同一台机器)

时间:2017-05-24 18:51:53

标签: apache tomcat

我花了很多时间试图找出一些显而易见的东西,但我在Apache / Tomcat中缺乏知识并不能让我这么容易。

我被要求将端口80(Apache)上的请求重定向到端口8080(Tomcat ..当它可以工作时,到应用程序)。

在我改变任何东西之前,localhost:80会显示"它可以正常运行"和locahost:8080 Apache欢迎页面。

我做了以下更改:

  • 取消注释LoadModule proxy_module modules / mod_proxy.so&来自httpd.conf文件的LoadModule proxy_http_module modules / mod_proxy_http.so
  • 取消注释包括conf / extra / httpd-vhosts.conf,始终在httpd.conf中

在httpd-vhosts.conf中,我添加了:

<VirtualHost *:80> ServerName localhost ProxyRequests Off ProxyPreserveHost On ProxyPass / http://localhost:8080 ProxyPassReverse / http://localhost:8080 </VirtualHost>

但是当我尝试http://localhost时,我确实到达了Apache欢迎页面,但所有css样式,图像都丢失了:

Apache welcome page

我知道它为什么不起作用:当我检查我的页面,并查看标题时,我看到指向favicon的链接例如http://mydomain/myApp/images/favicon.ico,但如果我复制粘贴该链接,我当然不会找到favicon,因为它不在Apache上,而是Tomcat(如果这有意义的话)。如果我将端口添加到URL,则它可以正常工作:http://mydomain:8080/myApp/images/favicon.ico

这与此处所述的问题有关:https://serverfault.com/questions/561892/how-to-handle-relative-urls-correctly-with-a-reverse-proxy

  

这是因为tomcat响应头将包含代理头(即Location头是http://localhost/WebApp而不是http://localhost:8080/WebApp)因为ProxyPreserveHost已打开

所以我将其切换为关闭:

<VirtualHost *:80> ServerName localhost ProxyRequests Off ProxyPreserveHost Off ProxyPass / http://localhost:8080 ProxyPassReverse / http://localhost:8080 </VirtualHost>

但页面仍然无法正确显示。

感谢您的投入。

1 个答案:

答案 0 :(得分:0)

我自己想出了这个。解决方案是在ProxyPass行中的地址末尾添加一个/。

据我所知,服务器正试图按字面意思解析地址,所以当它检查时,比如webs文件夹中的文档页面,它会返回一个代理错误,表示它不能解决http://localhost:8080docs