在上一篇笔记http://www.jianshu.com/p/08fa0913121d中,配置了两个tomcat的虚拟主机
默认的localhost主机以及www.test.com,如下:
在这里我用httpd反向代理Tomcat。
httpd和tomcat的通信,可以用http协议,也可以用ajp接口。
一、使用http协议进行反向代理
1、配置httpd虚拟主机
image.png[root@CentOS7A ~]#vim /etc/httpd/conf.d/vhost.conf
<VirtualHost *:80>
ServerName www.httpd.com #httpd主机名
ProxyRequests Off #不开启正向代理
ProxyVia On #给客户端的报文头发送代理信息
ProxyPreserveHost On #是否把客户端请求的主机名发送到后端tomcat。
<Proxy *>
Require all granted
</Proxy>
ProxyPass / http://127.0.0.1:8080/ #代理到本机的8080端口
ProxyPassReverse / http://127.0.0.1:8080/
<Location />
Require all granted
</Location>
</VirtualHost>
测试:
给www.httpd.com的配置hosts,实现域名解析。
可以看到,由于我的tomcat没有www.httpd.com这个主机,默认访问localhost这个主机。
2、用http反向代理到tomcat的www.test.com主机
tomcat配置了www.test.com主机,我这里用httpd反向代理到该主机。
给www.test.com的配置hosts,实现域名解析。可以看到,代理到tomcat的www.test.com主机上了。
这里关键的是要开启:ProxyPreserveHost On 。否则无法把主机名传到tomcat。
二、使用httpd的ajp接口进行反向代理
tomcat的ajp监听在8009端口,我们只需要把http改成ajp,把8080改成8009端口即可。
访问结果一样:
image.png
网友评论