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方式)的主要内容,如果未能解决你的问题,请参考以下文章