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

标签 apache tomcat proxy virtualhost forward

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

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

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

谢谢

最佳答案

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

  1. 定义一个 worker (一些文本字符串,我们称之为“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"协议(protocol)="AJP/1.3"/]

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

  1. 重启apache和tomcat

现在,任何对“http://www.domain.com/myapplication/servletName[?par=value...]”的请求都会被 apache(在端口 80 上)重定向到 tomcat(在端口 8081 上),然后再到servlet 我的应用程序。我假设您有一个目录“tomcat_home/webapps/myapplication”,该目录又包含一个包含“web.xml”文件的 WEB-INF 目录。上面的“servletName”是您在该文件中的 [servlet-name]...[/servlet-name] 标记之间定义的。

我选择了数字 8081(随意选择您的端口号,只要它不与其他标准服务冲突)这样端口 8080 仍然有效,供您测试“http://www.domain.com:8080/myapplication/servletName”(应在端口 8080 和 80(apache 端口)上产生相同的输出)。

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

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

附言。对格式感到抱歉 - 我无法更好地做到这一点

关于apache - Apache、Tomcat、端口 80、8080 和其他东西的组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4759523/

相关文章:

用于打开和关闭代理的 Windows 桌面小部件

Maven 代理设置不起作用

apache - 在 Apache 的/var/www 下的子目录上启用 CORS

php - 无法通过 SSH 从 apache 访问远程 MySQL

linux - 如何在 Perl 中以 root 身份运行一个句子

tomcat - 部署导致错误 : 404 的 Web 服务时 Apache Tomcat 日志中的异常

apache - 通过公开端口进行通信的Docker容器中的连接被拒绝

java - IntelliJ IDEA 中的 Eclipse 运行应用程序配置

java web app - 无法检索不是来自根文件夹的页面

webview - 自动检测代理 - JavaFX - webview