Apache反向代理Tomcat(mod_proxy方式)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Apache反向代理Tomcat(mod_proxy方式)相关的知识,希望对你有一定的参考价值。

Apache反向代理Tomcat(mod_proxy方式)

环境使用两台服务器,apache服务器IP为192.168.8.18,tomcat服务器地址为192.168.8.16

Tomcat搭建(192.168.8.16):


安装JDK:

官方网站下载二进制包

# chmod +x jdk-6u45-linux-i586-rpm.bin# 赋予执行权限
# ./jdk-6u45-linux-i586-rpm.bin# 执行

默认安装在/usr/java目录下

# vim /etc/profile.d/java.sh 
export JAVA_HOME=/usr/java/jdk1.6.0_45# 声明环境变量
export PATH=$PATH:$JAVA_HOME/bin# 追加PATH变量
# java -version# 测试成功与否


安装Tomcat:

# wget http://mirrors.hust.edu.cn/apache/tomcat/tomcat-7/v7.0.82/bin/apache-tomcat-7.0.82.tar.gz
# tar xf apache-tomcat-7.0.82.tar.gz 
# cp apache-tomcat-7.0.82 /usr/local/ -rf
# cd /usr/local/
# ln -sv apache-tomcat-7.0.82 tomcat
# vim /etc/profile.d/tomcat.sh
export CATALINA_HOME=/usr/local/tomcat
export PATH=$PATH:$CATALINA_HOME/bin
# vim /etc/rc.d/rc.local 
/usr/local/tomcat/bin/catalina.sh start# 开机启动
# /usr/local/tomcat/bin/catalina.sh start# 启动tomcat服务

打开http://192.168.8.16:8080/测试下页面是否正常

Apache搭建(192.168.8.18):


准备工作:

# tar xf apr-1.6.3.tar.gz 
# tar xf apr-util-1.5.1.tar.gz
# tar xf httpd-2.4.29.tar.gz
# ./configure --prefix=/usr/local/apr
# make
# make install
# cd apr-util-1.5.1
# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
# make
# make install
# yum -y install pcre-devel


Apache安装:

要使用mod_proxy与Tomcat实例连接,需要apache已经装载mod_proxy、mod_proxy_http、mod_proxy_ajp和proxy_balancer_module(实现Tomcat集群时用到)等模块

# ./configure --prefix=/usr/local/apache --sysconfdir=/etc/httpd --enable-so --enable-rewirte --enable-ssl --enable-cgi --enable-cgid --enable-modules=most --enable-mods-shared=most --enable-mpms-shared=all --with-mpm=event --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --enable-proxy --enable-proxy-http --enable-proxy-ajp --enable-proxy-balancer
# make
# make install
# vim /etc/rc.d/rc.local
# /usr/local/apache/bin/apachectl start
# vim /etc/profile.d/apache.sh
 export PATH=$PATH:/usr/local/apache/bin

配置apache通过mod_proxy模块与Tomcat连接:

        # vim httpd.conf

#DocumentRoot "/usr/local/apache/htdocs" # 注释掉,开启虚拟主机

Include /etc/httpd/extra/httpd-proxy.conf # 同时添加一行指向独立配置文件

# vim /etc/httpd/extra/httpd-proxy.conf # 编辑配置文件,添加如下内容

<VirtualHost *:8080>

ProxyVia Off

ProxyRequests Off

ProxyPass / http://192.168.8.16:8080/

ProxyPassReverse / http://192.168.8.16:8080/

<Proxy *>

 Require all granted

</Proxy>

<Location  / >

 Require all granted

</Location>

</VirtualHost>

关于如上apache指令的说明:


ProxyPreserveHost {On|Off}:如果启用此功能,代理会将用户请求报文中的Host:行发送给后端的服务器,而不再使用ProxyPass指定的服务器地址。如果想在反向代理中支持虚拟主机,则需要开启此项,否则就无需打开此功能。


ProxyVia  {On|Off|Full|Block}:用于控制在http首部是否使用Via:,主要用于在多级代理中控制代理请求的流向。默认为Off,即不启用此功能;On表示每个请求和响应报文均添加Via:;Full表示每个Via:行都会添加当前apache服务器的版本号信息;Block表示每个代理请求报文中的Via:都会被移除。


ProxyRequests {On|Off}:是否开启apache正向代理的功能;启用此项时为了代理http协议必须启用mod_proxy_http模块。同时,如果为apache设置了ProxyPass,则必须将ProxyRequests设置为Off。


ProxyPass  [path]  !|url  [key=value key=value ...]]:将后端服务器某URL与当前服务器的某虚拟路径关联起来作为提供服务的路径,path为当前服务器上的某虚拟路径,url为后端服务器上某URL路径。使用此指令时必须将ProxyRequests的值设置为Off。需要注意的是,如果path以“/”结尾,则对应的url也必须以“/”结尾,反之亦然。

另外,mod_proxy模块在httpd 

# apachectl start

访问http://192.168.8.18:8080/测试是否代理了192.168.8.16:8080


以上是关于Apache反向代理Tomcat(mod_proxy方式)的主要内容,如果未能解决你的问题,请参考以下文章

apache反向代理tomcat

apache2.2 反向代理 配置css js静态文件

apache配置反向代理+websocket

具有基本身份验证的 Apache 和 Tomcat 反向代理:Tomcat 可以接收用户名吗?

Apache反向代理Tomcat(mod_proxy方式)

apache 80 端口 反向代理 tomcat 8080端口