tomcat和Apache整合步驟(Apache设置反向代理供外网访问)

原创 2015年07月08日 19:11:38

Apache的默认端口是80,tomcat的默认端口是8080.想要既使用Apache处理静态网页,用tomcat处理动态的网页,就需要Apache和tomcat整合。Apache2.4.7自动集成了http的反向代理模块,稍微配置就行,Apache2.2没有集成websocket的模块,要想使用需要自己编译mod_proxy_wstunnel模块,具体编译步骤参考https://github.com/disconnect/apache-websocket和https://www.amoss.me.uk/2013/06/apache-2-2-websocket-proxying-ubuntu-mod_proxy_wstunnel/这里,但是推荐使用Apache2.4.7及以上版本。如果版本低建议升级。
模块

软件及版本:

操作系统:Ubuntu14.04 (64位)

Apache 2.4.7

tomcat 7.0.62

安装和环境变量配置这里不说了。网上很多,主要记录下整合的过程。

1.安装libapache2-mod-jk,

sudo apt-get install libapache2-mod-jk


2.打开/etc/apache2/mods-available/jk.conf文件修改,查看里面内容


可以看到JkWorkersFile /etc/libapache2-mod-jk/workers.properties 指向的是workers.properties文件

后面再加上

JkMount /rustezemyss/androidphone/ ajp13_worker
JkMount /rustezemyss/* ajp13_worker


ProxyRequests On
ProxyVia On

<Proxy *>
    Order deny,allow
    Allow from all
</Proxy>

<Location "/rustezemyss">
	ProxyPass http://127.0.0.1:8080/rustezemyss
	ProxyPassReverse http://127.0.0.1:8080/rustezemyss
</Location>

再编辑/etc/libapache2-mod-jk/workers.properties文件添加

worker.list = ajp13_worker,jk-status,jk-manager
worker.ajp13_worker.port=8080

worker.ajp13_worker.host=localhost
worker.ajp13_worker.type=ajp13
worker.loadbalancer.balance_workers=ajp13_worker

如下图:




3.然后查看这个文件是否指向/etc/apache2/mods-available/jk.conf


4 .修改/etc/apache2/sites-available/000-default.conf

在里面添加

JkMount /rustezemyss/androidphone ajp13_worker
JkMount /rustezemyss/web ajp13_worker
JkMount /rustezemyss/ ajp13_worker
JkMount /rustezemyss/* ajp13_worker
JkMount /rustezemyss/*.* ajp13_worker
6.打开$TOMCAT_HOME/conf/server.xml 文件。

<Service name="Catalina">
     ...
    <!-- Define an AJP 1.3 Connector on port 8080 -->
    <Connector port="8080" protocol="AJP/1.3" redirectPort="8443" />
    ...
</Service>

7.重启apache和tomcat

8。在浏览器输入网址




8080端口和80端口是一样的。完成


查看apache错误日志

gedit /var/log/apache2/error.log

linux在防火墙中添加转发规则。80端口重定向为8080端口,-A是增加 

iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080

删除规则 -D是删除

iptables -t nat -D PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080

目前只实现了http协议的反向代理

但是有一个很强大的websocket功能,反向代理还没实现好,目前还不知道怎么弄,好像需要重新编译apache,有一个插件https://github.com/disconnect/apache-websocket

但是我试了一下,编译有问题,找不到.h文件。而且Apache2.4.7好像本身就支持websocket反向代理,但是资料较少,目前还没有弄成功。有知道的朋友,请私信我,谢谢。

apachectl -v 查看apache版本号

查看已经被编译的模块:apachectl -l


apachectl -t -D DUMP_MODULES
查看apache加载模块


有时候,我们设置了反向代理,页面显示不正常是因为没有设置css,js等内容通过反向代理,或者找不到css、js等内容。设置方法是在httpd.conf或者000-default.conf中添加

ProxyPass /css/*.css !
ProxyPass /js/*.js !
ProxyPass /imag/*.png !
ProxyPass /swf/*.swf !
并且把css和js等内容放在www目录下。

另外查看apache收到的消息在/var/log/apache2下的access.log文件。查看错误日志是error.log



Apache 2.4.12支持 Websocket反向代理了,升级方法

sudo apt-add-repository ppa:ondrej/apache2
sudo apt-get update
sudo apt-get dist-upgrade



写个应用,可以实现长连接,点击close也不会出现500 internal error了。mark

如何配置Nginx作为WebSocket的反向代理

http {     map $http_upgrade $connection_upgrade {         default upgrade;         '' close;     } ...
  • ZhongGuoZhiChuang
  • ZhongGuoZhiChuang
  • 2016年12月01日 13:13
  • 2831

apache外网不能访问分析与解决方法

http://blog.sina.com.cn/s/blog_6bb7ebcc0101g0aw.html apache安装好以后,在本机可以用:http://localhost 或者...
  • hshl1214
  • hshl1214
  • 2016年02月23日 16:53
  • 14081

Nginx下的反向代理实践(解决了资源映射问题和websocket问题)。

最近,实验室主站要加很多功能,这时候就需要搞反向代理了。在千辛万苦的解决了apache反向代理的一些资源问题和websocket问题后。想试试ngnix会不会也有同样的问题,经过测试,发现nginx更...
  • talentxiet
  • talentxiet
  • 2016年09月19日 09:29
  • 2059

Nginx(6) nginx反向代理配置websocket,以及配置后websocket连接后立即断开的解决方法

用 proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; 配置nginx使之支持websock...
  • kkgbn
  • kkgbn
  • 2016年08月22日 17:36
  • 6975

apache+tomcat反向代理

在实际生产过程中,数据吞吐量大,tomcat压力也随之增大。 如何解决这种问题? 多个tomcat和apache集成,使多个tomcat称为一个集群。集群系统的好处: 高可靠性:当一台服务器出现...
  • sunhuwh
  • sunhuwh
  • 2015年09月04日 23:40
  • 3613

apache两种方案三种方式实现反向代理tomcat

目录 1、概述 2、方案一:以proxy_module方式反向代理 3、方案二:以mod_jk方式反向代理 4、总结 1、概述 在前一博客( http://zhao...
  • pengyouchuan
  • pengyouchuan
  • 2017年03月22日 18:28
  • 561

使用Apache 反向代理功能连接 Tomcat

    Apache HTTP server 和 Tomcat server 整合,一般是希望对于用户只公布 Apache HTTP server 的网址,而 Tomcat 的网址则不公布,扮演一个幕...
  • jacklondon
  • jacklondon
  • 2006年09月08日 14:56
  • 16994

apache反向代理 80端口映射到tomcat的8080端口

打开模块 LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_ajp_module modules/mod_proxy_aj...
  • i_iphone
  • i_iphone
  • 2016年12月19日 20:19
  • 4143

实例详解tomcat组件安装+Nginx反向代理tomcat+Apache使用mod_jk和mod_proxy反向代理和负载均衡

一、Tomcat简介    Tomcat是Apache软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些...
  • xo_zhang
  • xo_zhang
  • 2013年05月30日 17:48
  • 4500

SpringMVC WebSocket Apache代理 相关技术点总结

SpringMVC + WebSocket这个技术的文章一大把,最会笔者发现对WebSocket一知半解的情况下使用这个技术,任然会存在问题,又是还会决定莫名其妙,而且是直接使用别人代码的情况下更是如...
  • yin138
  • yin138
  • 2017年08月03日 20:31
  • 385
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:tomcat和Apache整合步驟(Apache设置反向代理供外网访问)
举报原因:
原因补充:

(最多只允许输入30个字)