Apache、Tomcat、端口80、8080和其他东西的组合

Apache、Tomcat、端口80、8080和其他东西的组合,apache,tomcat,proxy,virtualhost,forward,Apache,Tomcat,Proxy,Virtualhost,Forward,我有一个运行httpd、mysql和tomcat6的Centos5。都很好。我的目标是实现以下目标 www.domain.com>>>转发/代理到www.domain.com:8080/myapplication(由tomcat提供) www.domain.com/phpmyadmin>>>www.domain.com/phpmyadmin(由来自htdocs的Apache提供服务) www.domain.com/*>>>也由htdocs文件夹作为“普通”Apache内容提供服务 我怎样才能做到

我有一个运行httpd、mysql和tomcat6的Centos5。都很好。我的目标是实现以下目标

www.domain.com>>>转发/代理到www.domain.com:8080/myapplication(由tomcat提供) www.domain.com/phpmyadmin>>>www.domain.com/phpmyadmin(由来自htdocs的Apache提供服务) www.domain.com/*>>>也由htdocs文件夹作为“普通”Apache内容提供服务

我怎样才能做到这一点?有什么想法吗


THX

将您在www.domain.com中的索引文件重定向到www.domain.com:8080/myapplication。index.php示例:

<?php

  header("Location: http://www.domain.com:8080/myapplication");

?>


不是最干净或最优雅的方式,但它可以工作。优雅的方法是在apache中使用vhost。

您与apache提供的htdocs的唯一不同之处似乎是向tomcat发送内容,tomcat正在运行一个servlet“MyAppApplication”。在这种情况下,

  • 定义一个worker(一些文本字符串,我们称之为“myworker”)
  • 在文件/etc/apache2/apache2.conf的末尾添加行
  • --忽略帖子中的这一行--

  • 在该目录中,创建一个文件“workers.properties”,其中包含以下内容:

    worker.myworker.type=ajp13
    worker.myworker.host=localhost
    worker.myworker.port=8081
    worker.myworker.cachesize=10
    worker.myworker.cache_timeout=600
    worker.myworker.socket_keepalive=1
    worker.myworker.socket_timeout=300
    
  • 编辑tomcat_inst_dir/conf/server.xml行以放入一行

    [连接器端口=“8081”协议=“AJP/1.3”/]

  • 注意:将方括号更改为尖括号。 上面的一行在[service]…[/service]标记内,在[Engine]外。。。[/Engine]标签,放在[Engine]行的正上方

  • 重新启动apache和tomcat
  • 现在有任何要求“http://www.domain.com/myapplication/servletName[?par=value…]”被apache(在端口80上)重定向到tomcat(在端口8081上)和servlet myapplication。我假设您有一个目录“tomcat_home/webapps/myapplication”,它又有一个目录WEB-INF,其中有一个“WEB.xml”文件。上面的“servletName”是您在该文件中的[servlet name]…[/servlet name]标记之间定义的内容

    我选择了号码8081(请随意选择您的端口号,只要它不与其他标准服务冲突),这样端口8080仍处于活动状态,您可以测试“http://www.domain.com:8080/myapplication/servletName“(应该在端口8080和80(apache端口)上产生相同的输出)

    重要提示:保留在上述过程中更改的所有文件的备份副本,这样,如果上述操作不起作用,您可以恢复到您的工作系统。我必须经过无数次的迭代才能让它工作

    祝你好运,希望这对你有用,-M.S


    另外,对于格式问题,我感到很抱歉-我无法更好地理解这一点

    他的问题很模糊,他是否在寻找您建议的重定向或类似于上面的代理。使用mod_jk代理并将来自用户的所有请求保持在同一端口上要干净得多。我也不希望URL中的端口等。我“只是”希望我的tomcat应用程序响应我的域请求…嗯。。。我刚刚重读了你的帖子。这个解决方案不需要我使用www.domain.com/myapp/作为URL吗?也许更好的解决方案是将所有内容重新发送给Tomcat,但不发送定义的URL/文件夹的特定列表,如domain.com/phpmyadmin。使用上述解决方案,www.domain.com/myapps/进入servlet,…domain.com/phpmyadmin/获取/var/www/phpmyadmin/index.html的内容,或者从默认html目录所在的位置获取内容。您可以将“一切”重新路由到tomcat,在JkMount行中使用“/*”,但是您必须在tomcat_inst/webapps中拥有phpmyadmin目录。不管您是否有WEB-INF目录,tomcat也可以提供原始html页面,速度几乎和apache一样快(这就是我读到的)。但这可能是一个不必要的重定向,IMHO。注意,-M.S.另一方面,我认为您需要为管理员网页设置一些特权/保护。如果您将所有内容发送给tomcat,我不确定您是否仍然可以使用诸如“.htaccess”之类的html好东西,但请随意尝试。稍后,-M.S.I重新阅读了您的说明-可能您正在询问如何让apache将除phpmyadmin之外的所有内容转发给tomcat。如果是这样,对不起,我没有答案。注意,-M.S.我开始尝试你的解决方案,但我失败了,因为我没有安装mod_jk,也不知道如何正确地完成。不管怎样,我都会回答马克,因为我想这会有帮助的。谢谢你。我将不得不在URL中使用端口。
    worker.myworker.type=ajp13
    worker.myworker.host=localhost
    worker.myworker.port=8081
    worker.myworker.cachesize=10
    worker.myworker.cache_timeout=600
    worker.myworker.socket_keepalive=1
    worker.myworker.socket_timeout=300