0

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

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

我怎样才能做到这一点?有任何想法吗?

谢谢

4

2 回答 2

1

您与 apache 服务 htdocs 的唯一偏差似乎是将内容发送到运行 servlet“myappplication”的 tomcat。在这种情况下,

  1. 定义一个工人(一些文本字符串,我们称之为“myworker”)。
  2. 在文件 /etc/apache2/apache2.conf 的末尾附近,添加以下行

--忽略后面的这一行--

# 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”/]

注意:将方括号改为尖括号。上面的行进入 [service]...[/Service] 标签和 [Engine] ... [/Engine] 标签之外,放在 [Engine] 行的正上方。

  1. 重启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 端口)上产生相同的输出)。

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

祝你好运,希望这对你有用,-MS

PS。对格式感到抱歉 - 我无法得到更好的结果

于 2011-01-22T07:40:37.557 回答
0

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

<?php

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

?>

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

于 2011-01-21T13:54:09.657 回答