当前位置: 首页 > 知识库问答 >
问题:

Apache 2.4 Proxy AJP与Tomcat 8一起服务于多个域

璩正志
2023-03-14
http://localhost:8080/webapps1
http://localhost:8080/webapps2
http://localhost:8080/webapps3

Tomcat AJP连接器配置为:

<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

现在我尝试通过AJP连接器使用Apache2.4代理配置将这三个应用程序全部发布到Internet上

我还注册了三个FQDN如:

www.thss.domain1.com.au
www.stoa.domain2.com.au
ozssc.stoa.domain2.com.au
......
listen 10.0.1.100:80
......
<VirtualHost 10.0.1.100:80>
  ProxyPreserveHost On
  ServerName www.thss.domain1.com.au
  ServerAlias thss.domain1.com.au
  ServerAdmin admin@domain1.com.au
  ProxyPass / ajp://127.0.0.1:8009/webapps1/
  ProxyPassReverse / ajp://127.0.0.1:8009/webapps1/
</VirtualHost>
<VirtualHost 10.0.1.100:80>
  ProxyPreserveHost On
  ServerName www.stoa.domain2.com.au
  ServerAlias stoa.domain2.com.au
  ServerAdmin admin@domain1.com.au
  ProxyPass / ajp://127.0.0.1:8009/webapps2/
  ProxyPassReverse / ajp://127.0.0.1:8009/webapps2/
</VirtualHost>
<VirtualHost 10.0.1.100:80>
  ProxyPreserveHost On
  ServerName ozssc.stoa.domain2.com.au
  ServerAdmin admin@domain1.com.au
  ProxyPass / ajp://127.0.0.1:8009/webapps3/
  ProxyPassReverse / ajp://127.0.0.1:8009/webapps3/
</VirtualHost>

详情如下:

当我从Internet访问我的第一个FQDN(www.thss.domain1.com.au)时,请求成功地通过了:路由器->Apache 2.4(端口80)->AJP连接器(8009)->Tomcat 8.0.28,所有页面都运行良好。

Tomcat访问日志显示:

58.106.1.75 - - [01/Nov/2015:09:37:40 +1100] "GET /webapps1/ HTTP/1.1" 200 2616
58.106.1.75 - - [01/Nov/2015:09:37:40 +1100] "GET /webapps1/css/thss_layout.css HTTP/1.1" 200 1405
58.106.1.75 - - [01/Nov/2015:09:37:40 +1100] "GET /webapps1/js/dojo-release-1.8.6/dojo/dojo.js HTTP/1.1" 200 158637
148.251.45.185 - - [01/Nov/2015:08:58:59 +1100] "GET /webapps2/ HTTP/1.1" 200 19098
148.251.45.185 - - [01/Nov/2015:08:59:00 +1100] "GET /webapps2/webapps2/dojo-release-1.10.4/dijit/themes/claro/claro.css HTTP/1.1" 404 1158
148.251.45.185 - - [01/Nov/2015:08:59:01 +1100] "GET /webapps2/webapps2/css/style.css HTTP/1.1" 404 1088
148.251.45.185 - - [01/Nov/2015:08:59:02 +1100] "GET /webapps2/webapps2/images/icons/search33.png HTTP/1.1" 404 1112

欢迎提供任何建议!

周末愉快!大副

共有1个答案

陈兴朝
2023-03-14

不要更改ProxyPass指令中的上下文路径。当你这样做的时候,有很多很多的方法搬起石头砸自己的脚。

猜测一下,页面上的链接是绝对的,所以它们包括上下文路径。当客户机请求这些内容时,ProxyPass指令再次添加上下文路径。

最简单的解决方案是为虚拟主机配置Tomcat,并将每个应用程序作为根web应用程序部署在自己的虚拟主机中。

 类似资料:
  • 我正在使用Vagrant部署到Ubuntu Linux,并尝试启动服务。 然后我跟踪,发现: ?tomcat8.service-lsb:启动tomcat。加载:加载(/etc/init.d/tomcat8) active:失败(结果:exit-code)自2016-03-28 09:44:17 GMT;5s前 文档:人:systemd-sysv-generator(8) 进程:884 execst

  • 当我发送请求时,握手成功。下面是请求和响应头: 请求标头 连接maps.googleapis.com:443 HTTP/1.1客户端用户代理:apache-httpclient/4.1.1(Java1.5)传输连接:Keep-Alive主机:maps.googleapis.com 运输 连接:关闭 握手之后,没有进一步的请求和响应发生。

  • 这是一道样题!千万不要在生产中这样做。在单独的容器中运行NGINX/PHP/OTHER服务! 和:

  • 问题内容: 我用来调用Firebase请求函数,并在请求完成后得到通知,以便能够处理结果。在这种情况下,我只是打印了一条语句。 这段代码工作正常。 问题 在于,在运行时,数据将被添加到Firebase数据库中。这就是为什么我必须使用而不是。 这意味着在运行时会有一个观察者,并且如果数据已添加到数据库中,则将再次调用其中的块。 一旦发生这种情况,该应用就会崩溃,因为没有调用。只要我说对了。 如果将其

  • 问题内容: 下面的代码有任何错误吗?以下代码无法提供多个目录服务。当我访问localhost:9090 / ide时,服务器将返回404错误。 当我这样更改代码时, 它会按我预期的那样工作。 问题答案: 使用中的问题之一是请求路径用于构建文件名,因此,如果要从根目录以外的任何地方提供服务,则需要剥离到该处理程序的路由前缀。 标准库为此提供了一个有用的工具,但该工具只能在s上使用,而不能在s 上使用

  • 我已经安装了Tomcat7和8,但是如果我进入服务器选项卡并单击Create new Server,我会发现:它既不允许我插入服务器名称,也不允许我单击Finish。