apache反向代理tomcat多域名安装部署

来源:互联网 发布:光启骗局知乎 编辑:程序博客网 时间:2024/04/28 22:43

反向代理简言之就是通过一台代理服务器,让Internet用户通过代理服务器可以访问到内部网络上的服务器。 对用户而言只暴露代理服务器。

环境:一台代理服务器:192.168.10.192 OS是centos6.0 64bit;

           一台tomcat应用服务器:192.168.10.193 OS是centos6.0 64bit;

说明:代理服务器需要有公网IP地址,在ISP运营商解析域名。

一、apache安装部署

1.1    准备安装httpd-2.2.22

关闭系统自带的web服务:#chkconfig httpd off

安装gcc

#yum –y install gcc*

下载并解压http-2.2.22安装程序

#tar -xzvf httpd-2.2.22.tar.gz

1.2 安装Apache Web Server

进入源码目录

#cd /install/httpd-2.2.22 

编译安装

#./configure --prefix=/usr/local/apache --enable-modules=so --enable-mods-shared=most --enable-proxy --enable-proxy-connect --enable-proxy-ftp --enable-proxy-http --enable-proxy-ajp --enable-proxy-balancer --enable-rewrite

#make

#make install

 

安装完成后检查进程模块列表

/usr/local/apache/bin/apachectl -l

显示

Compiled in modules:

  core.c

  mod_authn_file.c

  mod_authn_default.c

  mod_authz_host.c

  mod_authz_groupfile.c

  mod_authz_user.c

  mod_authz_default.c

  mod_auth_basic.c

  mod_include.c

  mod_filter.c

  mod_log_config.c

  mod_env.c

  mod_setenvif.c

  mod_version.c

  mod_proxy.c

  mod_proxy_connect.c

  mod_proxy_ftp.c

  mod_proxy_http.c

  mod_proxy_scgi.c

  mod_proxy_ajp.c

  mod_proxy_balancer.c

  prefork.c

  http_core.c

  mod_mime.c

  mod_status.c

  mod_autoindex.c

  mod_asis.c

  mod_cgi.c

  mod_negotiation.c

  mod_dir.c

  mod_actions.c

  mod_userdir.c

  mod_alias.c

  mod_rewrite.c

  mod_so.c

[root@demo bin]#

启动Apace Web Server

#./apachect1 start

打开浏览器,测试是否安装成功:

 

二、编译代理/反向代理模块

进入源码目录

#cd /install/httpd-2.2.22/modules/proxy

 

先安装基础模块

生成mod_proxy.so

#/usr/local/apache/bin/apxs -i -a -c mod_proxy.c proxy_util.c

生成mod_proxy_http.so

#/usr/local/apache/bin/apxs -i -a -c mod_proxy_http.c

 

编译生成缓存模块:

#cd /install//httpd-2.2.22/modules/cache

生成mod_cache.c

#/usr/local/apache/bin/apxs -i -a -c mod_cache.c cache_util.c cache_cache.c cache_storage.c cache_pqueue.c cache_hash.c

 

生成mod_mem_cache.so

#/usr/local/apache/bin/apxs -i -a -c mod_mem_cache.c

 

生成mod_disk_cache.so

#/usr/local/apache/bin/apxs -i -a -c mod_disk_cache.c

 

生成mod_file_cache.so

#/usr/local/apache/bin/apxs -i -a -c mod_file_cache.c

 

启动apache,检查是否成功生成,查看apache安装目录,检查httpd.conf配置文件:

#cat /usr/local/apache/conf/httpd.conf

 

三、配置代理/反向代理模块

编辑配置文件 httpd.conf,使其支持 vhost 虚拟主机

[root@bogon httpd-2.2.21]# vi /usr/local/apache/conf/httpd.conf

Include conf/extra/httpd-vhosts.conf  #去掉改行的注释

 

编辑 /usr/local/apache2/conf/extra/httpd-vhosts.conf  配置 apache 的虚拟主机

#vi httpd-vhosts.conf

 

NameVirtualHost *:80

# VirtualHost example:

# Almost any Apache directive may go into a VirtualHost container.

# The first VirtualHost section is used for all requests that do not

# match a ServerName or ServerAlias in any <VirtualHost> block.

 <VirtualHost *:80>
    SetEnv force-proxy-request-1.0 1
    SetEnv proxy-nokeepalive 1
    ServerAdmin mager@xxxxxxxxx.com
    ServerName www.aaa.com
    ServerAlias www.aaa.com

    ErrorLog "logs/aaa-error_log"
    CustomLog "logs/aaa-access_log" common
    ProxyRequests Off
    ProxyPreserveHost On
   <Proxy *>   
   Options -Indexes
    AllowOverride None
    Order allow,deny
    Allow from all
    Satisfy all
   </Proxy>
    ProxyPass / http://192.168.10.192:8888/
    ProxyPassReverse / http://192.168.10.192:8888/
</VirtualHost>

 <VirtualHost *:80>
    SetEnv force-proxy-request-1.0 1
    SetEnv proxy-nokeepalive 1
    ServerAdmin mager@xxxxxxxxx.com
    ServerName www.bbb.com
    ServerAlias www.bbb.com

    ErrorLog "logs/bbb-error_log"
    CustomLog "logs/bbb-access_log" common
    ProxyRequests Off
    ProxyPreserveHost On
   <Proxy *>   
   Options -Indexes
    AllowOverride None
    Order allow,deny
    Allow from all
    Satisfy all
   </Proxy>
    ProxyPass / http://192.168.10.193:8080/
    ProxyPassReverse / http://192.168.10.193:8080/
</VirtualHost>

 

#代理HTTP和FTP连接的接收缓冲区大小(字节)

ProxyReceiveBufferSize 2048

#代理超时

ProxyTimeout 300

#转发请求的最大代理数目 默认15,这个设置是为了避免无限代理循环或DoS攻击的发生

ProxyMaxForwards 300

[root@demo extra]#

  

四、安装Tomcat6.0

 修改tomcat配置文件server.xml

在</Host> </Host>中间必须加别名,也就是预定义的域名,一定要填写啊,不然不能访问正常的。

      <Host name="localhost"  appBase="webapps"

            unpackWARs="true" autoDeploy="true"

            xmlValidation="false" xmlNamespaceAware="false">

        <!-- SingleSignOn valve, share authentication between web applications

             Documentation at: /docs/config/valve.html -->

        <!--

        <Valve className="org.apache.catalina.authenticator.SingleSignOn" />

        -->

         <!-- Access log processes all example.

             Documentation at: /docs/config/valve.html -->

        <!--

        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" 

               prefix="localhost_access_log." suffix=".txt" pattern="common" resolveHosts="false"/>

        -->

        <Alias>www.aaa.com</Alias>

                <Context path="" docBase="financeAdmin" debug="0" reloadable="true" />

      </Host>

    </Engine>

  </Service>

</Server>

[root@business ~]#

  

上面这个还是比较容易理解的,主要就是设置了一个东西,当域名(可以正常访问的)到这里的时候默认是访问80端口,所以上面是设置了当请求到该服务器时如何对域名进行转发。

 

第二个就是设置和tomcat的整合,当访问www.bbb.com的时候,直接转发到服务器8080端口下去访问该域名,就相当于远程浏览器访问www.bbb.com:8080了

 

查看一下端口lsof |grep tomcat和lsof -i:8080可以看到你想要的信息,lsof -i:8080是用来查看8080端口是谁在使用!

 

然后重新启动一下apache:service httpd restart 等待启动完成,OK

 

现在不急着访问,还需要设置一下tomcat

打开tomcat的service.xml  我的在/usr/local/tomcat/conf/service.xml下。vi后输入:set nu显示行,这里你可以清晰的看到tomcat的配置:Connector中可以看出HTTP8080端口,然后AJP是8009端口。 

下面找到engine这个标签,该文件只此一个标签。engine处理在Connector中接受到的所有客户请求! 

可以看到defaulthost是localhost,这里无伤大雅,别去管它,当然你要设置成你的域名也可以。 

其子标签host设置如下,name修改成域名,appbase就是程序路径,默认好像是webapps,就是tomcat默认源码发布的位置,这里可以设置成绝对路径没问题/usr/local/tomcat/webapps 

host就是定义了一个虚拟主机,所以要实现单IP多域名的话就需要设置多个host,然后可以把appbase设置到程序目录下,访问的时候可直接到达每一个应用程序的根目录 

host标签下添加Context,这个上下文定义可以参照

Java代码 

1.<Context path="" docBase="/usr/local/tomcat/webapps" debug="1" privileged="true" reloadable="true">  

2.       </Context> 

 <Context path="" docBase="/usr/local/tomcat/webapps" debug="1" privileged="true" reloadable="true">

        </Context>

 docbase是文档路径,path不填表示访问的时候默认是以域名转发到的路径为根路径,一般不用管它 

然后保存退出:wq

这时需要重新启动一下tomcat

到达tomcat的bin目录下我这里是/usr/local/tomcat/bin/shutdown.sh  运行这个然后再运行/usr/local/tomcat/bin/startup.sh启动,完成重启

浏览器输入域名可以访问到不同的网站说明配置成功!

原创粉丝点击