首页 文章

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

提问于
浏览
0

我花了很多时间试图找出一些显而易见的东西,但是我对Apache / Tomcat缺乏了解并不能让我这么容易 .

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

在我更改任何内容之前,localhost:80将显示“It works”和locahost:8080 Apache欢迎页面 .

我做了以下更改:

  • 从httpd.conf文件中取消注释LoadModule proxy_module modules / mod_proxy.so和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

我知道为什么它不起作用:当我检查我的页面,然后查看 Headers 时,我看到指向favicon的链接例如是http://mydomain/myApp/images/favicon.ico,但如果我复制粘贴该链接,我当然不会找到该图标因为它不在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

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

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

相关问题