繁体   English   中英

Tomcat mod_proxy AJP静态资源目录

[英]Tomcat mod_proxy AJP static resources directory

我使用以下配置使用httpd与tomcat:

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

这工作正常,但是当我呈现HTML时,来自tomcat的图像链接不起作用:

<img src="/MyProject/img/image.jpg"/>

我期待的地方:

  <img src="/img/image.jpg"/>

您的图像放在tomcat的路径/img/image.jpg中,它是上下文相对路径,绝对路径是/MyProject/img/image.jpg用于您的tomcat,尽管它是/img/image.jpg之外的阿帕奇。 你代理/ - > / MyProject所以当你将上下文名称添加到路径'MyProject'时,它实际上不像你提到的那样工作。

解决方案1:

在tomcat中使用上下文相对路径

img/image.jpg

在这种情况下,您必须小心所需的URI,例如/ MyProject / page1 / action1 /具有其图像相对路径

../../img/image.jsp

解决方案2:

使用带有前导斜杠的文档根路径

/img/image.jpg

并使用文档根(' href '属性)定义元素 关注链接!

<head>
   <base href="http://www.mydomain.com/">
</head>

http://www.w3schools.com/tags/tag_base.asp


解决方案3:

将项目映射到apache中与tomcat中相同的URI (Personaly我也使用此解决方案,因为它非常简单,我使用常用​​词作为项目/上下文名称,例如'web','site'等。 )。

ProxyPass /MyProject ajp://localhost:8009/MyProject

解决方案4:

使用内容过滤器,例如mod_proxy_html http://httpd.apache.org/docs/current/mod/mod_proxy_html.html

注意:此解决方案有点慢(与您使用的过滤器无关)!


请注意PROXY CONFIGURATION!

这只是重定向等,但您的ProxyPathReverse配置错误

ProxyPass / ajp://localhost:8009/MyProject
ProxyPassReverse /MyProject http://www.mydomain.com/

请参阅完整说明http://www.humboldt.co.uk/the-mystery-of-proxypassreverse/#more-131

阅读配置示例http://www.apachetutor.org/admin/reverseproxies

你需要:

  1. 使用mod_html重写链接。 这很慢,表明你做错了。

  2. 从/ to / MyProject发出重定向 ,您可以使用RewriteRule或/ <meta http-equiv="refresh" content="0; url=http://<host>/MyProject/"> /index.html,并将ProxyPass指令更改为

    ProxyPass /MyProject ajp://localhost:8009/MyProject

因此代理不会乱用URL路径。 这是迄今为止更好的技术。 您可能根本不需要ProxyPassReverse指令,但如果这样做,则应该应用相同的更改。

我还没有测试这个准确性(并且AJP倾向于缩短像Apache中的重写这样的事情,进行额外的测试和调整几乎是强制性的)。 因此,通过这个小小的AJP免责声明,您可以尝试以下方面:

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

只是尝试在入站上捕获那些不正确的图像路径。 如果失败,请尝试使用尾部斜杠。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM