17

我在配置 Apache 和 Tomcat 时遇到问题,情况如下:

我有一个 Apache Web 服务器,运行正常,我只需键入以下内容即可访问该服务器:

http://localhost

另外,在这台主机上,我有一个运行良好的 Tomcat;我创建了一个迷你网络应用程序,其中文件位于“prueba”目录中,我可以访问输入:

http://localhost:8080/prueba

(我知道 Apache 运行在 80 端口,Tomcat 运行在 8080)

我想要做的是通过 Apache 用户可以访问“pruebas”(在 Tomcat 上运行),我的意思是:

http://localhost/prueba

我已经阅读了很多,我认为有两种方法可以做到这一点,我决定启用代理模块(proxy 和 proxy_ajp,使用 a2enmod),我也读过我必须编辑这个文件:网站可用/默认,这是内容:

NameVirtualHost *:80
<VirtualHost *:80>
     ServerName 127.0.0.1
     DocumentRoot /var/www

     ProxyRequests Off
     ProxyPreserveHost On

     ProxyPass /static/ !
     ProxyPass / ajp://localhost:8009/
     ProxyPassReverse / ajp://localhost:8009/

.
.
.
     Alias /static/ "/apache/www/"

</VirtualHost>

但这并没有正常工作:(

我不得不说我已经尝试了很多改变,就这两条线,比如:

     ProxyPass /prueba ajp://localhost:8009/prueba
     ProxyPassReverse /prueba ajp://localhost:8009/prueba

或者

     ProxyPass / ajp://localhost:8009/prueba
     ProxyPassReverse / ajp://localhost:8009/prueba

(每次我编辑文件时,我都会重新启动 apache)

但是当我访问 [http://localhost/prueba/] 时,我有: 服务暂时不可用

有谁知道为什么?提前谢谢各位。

Pd:我正在使用 apache 2.2.17 和 tomcat6。

4

7 回答 7

12

你必须把

 ProxyPass / ajp://localhost:8009/
 ProxyPassReverse / ajp://localhost:8009/

在你的 apache 虚拟主机上

然后你必须在tomcat中取消注释ajp监听器

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

然后你必须在 server.xml 中配置主机和上下文路径

REFF: http ://www.ntu.edu.sg/home/ehchua/programming/howto/ApachePlusTomcat_HowTo.html

希望对你有帮助..

于 2013-06-28T10:22:06.637 回答
2

ProxyPassReverse定义 URL Apache httpd 应该重写 URL,这将重定向到代理(隐藏)的 URL。因此,您应该将您的ProxyPassReverse行更改为以下内容:

ProxyPassReverse / http://localhost/prueba/

另见:http ://httpd.apache.org/docs/2.2/mod/mod_proxy_ajp.html#usage

于 2012-12-01T14:27:28.847 回答
1

尝试这个:

ProxyPass /prueba/ http://localhost:8009/prueba/
ProxyPassReverse /prueba/ http://localhost:8009/prueba/

然后从浏览器中点击以下 URL:http://localhost/prueba/

注意:必须添加“/prueba/”

于 2015-01-02T17:55:41.147 回答
0

由于 SELinux 可能会出现服务不可用,请尝试禁用 SE Linux:setenforce 0

于 2013-10-28T06:43:06.780 回答
0

您可以尝试添加:

ProxyPreserveHost On

从文档中

“启用后,此选项会将 Host: 行从传入请求传递到代理主机,而不是 ProxyPass 行中指定的主机名。

此选项通常应关闭。它在特殊配置中非常有用,例如基于代理的大量名称的虚拟主机,其中原始 Host 标头需要由后端服务器评估。”

于 2015-05-12T01:29:34.137 回答
0

端口 8009 是 Tomcat 所以使用 ajp 而不是 http

ProxyPass /prueba/ ajp://localhost:8009/prueba/
ProxyPassReverse /prueba/ ajp://localhost:8009/prueba/
于 2020-03-19T21:57:45.740 回答
0

你说:我可以输入:

http://localhost : 8080 /prueba

但以下不起作用:

ProxyPass /prueba/ http://localhost : 8009 /prueba/

8080 != 8009

确保您的端口号相同

于 2017-02-13T14:27:50.277 回答