结合Apache,Tomcat,端口80,8080等东西

时间:2011-01-21 13:50:20

标签: 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内容

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

THX

2 个答案:

答案 0 :(得分:1)

你对服务htdocs的apache的唯一偏差似乎是向tomcat发送东西,tomcat正在运行一个servlet“myappplication”。在这种情况下,

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

    # Where to find workers.properties
    # Update this path to match your conf directory location (put workers.properties next to httpd.conf)
    JkWorkersFile /etc/apache2/workers.properties
    
    # Where to put jk logs
    # Update this path to match your logs directory location (put mod_jk.log next to access_log)
    JkLogFile /var/log/apache2/mod_jk.log
    
    # Set the jk log level [debug/error/info]
    JkLogLevel info
    
    # Select the log format
    JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "
    
    # JkOptions indicate to send SSL KEY SIZE,
    JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories
    
    # JkRequestLogFormat set the request format
    JkRequestLogFormat "%w %V %T"
    
    
                 JkMount /myapplication/* myworker
    
    1. 在该目录中,创建一个文件“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
      
    2. 编辑行tomcat_inst_dir / conf / server.xml以放入一行

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

    3. 注意:将方括号更改为尖括号。 上面的行在[service] ... [/ Service]标签内,并在[Engine] ... [/ Engine]标签之外,将它放在[Engine]行的正上方。

      1. 重启apache和tomcat
      2. 现在,任何对“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。

        PS。抱歉格式化 - 我无法更好地了解

答案 1 :(得分:0)

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

<?php

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

?>

不是最干净或最优雅的方式,但它有效。优雅的方法是在apache中使用vhost。