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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值