• Tomcat与Nginx、Apache结合的相关实践


    一、LNMT

      简介:在Tomcat服务器前端部署一个Nginx(反向代理),当用户请求静态资源时,由Nginx服务器负责响应;当用户请求java应用程序资源时,由后端的Tomcat服务器进行响应。

      环境:

        OS:Linux CentOS 6.8

        Tomcat 6.0, IpAddr:192.168.1.101

        Nginx 1.10.2, IpAddr:192.168.1.102

      配置:

        Tomcat端配置:  

    /*定义一个主机*/
    <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
        /*定义一个Context:testapp应用程序*/ <Context path="/test" docBase="testapp" reloadable="true" />
    /*定义第二个应用程序:test-1app*/ <Context path="/test-1" docBase="test-1app" reloadable="true" /> </Host>

        Nginx端配置:

    server {
        listen       80 default_server;
        listen       [::]:80 default_server;
        server_name  _;
        root         /usr/share/nginx/html;
    
        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;
    
        /*处理静态资源请求*/
        location / {
        }
    
        /*Tomcat处理URL以jsp和do结尾的请求*/
        location ~*.(jsp|do)$ {
            proxy_pass http://192.168.1.101:8080;
        }
    
        /*Tomcat处理testapp应用请求*/
        location /test/ {
            proxy_pass http://192.168.1.101:8080/test/index1.jsp;
        }
    
        /*Tomcat处理test-1app应用请求*/
        location /test-1/demo.jsp {
            proxy_pass http://192.168.1.101:8080;
        }
    
        error_page 404 /404.html;
            location = /40x.html {
        }
    
        error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }
    }

    二、LAMT

      简介:与LNMT类似,只不过是httpd作为反代服务器。但httpd反代tomcat有三种方式:

        ①基于httpd的proxy_moduleproxy_http_module的反代

        ②基于httpd的proxy_moduleproxy_ajp_module的反代

        ③基于httpd的mod_jk模块的反代(需自行编译安装) 

      环境:

        OS:Linux CentOS 6.8

        Tomcat 6.0, IpAddr:192.168.1.101

        httpd 2.2.15, IpAddr:192.168.1.102

      配置:

        第一种方式的实现:

        Tomcat端配置与Nginx时配置相同,无需修改。

        Httpd端配置:

    NameVirtualHost 192.168.1.102:80
    
    <VirtualHost 192.168.1.102:80>
      ServerName www.b.com
      ProxyRequests Off
      ProxyVia On
      ProxyPreserveHost On
      ProxyPass / http://192.168.1.101:8080
      ProxyPassReverse / http://192.168.1.101:8080
      <Location />
        Allow from all
      </Location>
    </VirtualHost>
    
    <VirtualHost 192.168.1.102:80>
      ServerName www.c.com
      ProxyRequests Off
      ProxyVia On
      ProxyPreserveHost On
      ProxyPass / http://192.168.1.101:8080/test/index1.jsp
      ProxyPassReverse / http://192.168.1.101:8080/test/index1.jsp
      <Location />
        Allow from all
      </Location>
    </VirtualHost>
    
    <VirtualHost 192.168.1.102:80>
      ServerName www.d.com
      ProxyRequests Off
      ProxyVia On
      ProxyPreserveHost On
      ProxyPass / http://192.168.1.101:8080/test-1/demo.jsp
      ProxyPassReverse / http://192.168.1.101:8080/test-1/demo.jsp
      <Location />
        Allow from all
      </Location>
    </VirtualHost>

        如果是httpd2.4+版本,配置如下:

    <VirtualHost 192.168.1.102:80>
      ServerName www.b.com
      ProxyRequests Off
      ProxyVia On
      ProxyPreserveHost On
      <Proxy *>
         Require all granted         
      </Proxy>
      ProxyPass / http://192.168.1.101:8080
      ProxyPassReverse / http://192.168.1.101:8080
      <Location />
        Require all granted
      </Location>
    </VirtualHost>

        第二种方式实现:

        Tomcat端无需变动

        Httpd端仅需修改协议和端口即可,配置如下:

    NameVirtualHost 192.168.1.102:80
    
    <VirtualHost 192.168.1.102:80>
      ServerName www.b.com
      ProxyRequests Off
      ProxyVia On
      ProxyPreserveHost On
      ProxyPass / ajp://192.168.1.101:8009
      ProxyPassReverse / ajp://192.168.1.101:8009
      <Location />
        Allow from all
      </Location>
    </VirtualHost>
    
    <VirtualHost 192.168.1.102:80>
      ServerName www.c.com
      ProxyRequests Off
      ProxyVia On
      ProxyPreserveHost On
      ProxyPass / ajp://192.168.1.101:8009/test/index1.jsp
      ProxyPassReverse / ajp://192.168.1.101:8009/test/index1.jsp
      <Location />
        Allow from all
      </Location>
    </VirtualHost>

        第三种方式实现:

        请求流程:Client-->http-->httpd-->mod_jk(ajp)-->tomcat(http connector)

        首先安装mod_jk模块:tomcat-connectors-1.2.42-src.tar.gz(依赖httpd-devel)

        展开归档后进入native目录,执行

        # ./configure --with-apxs=/usr/sbin/apxs

        # make && make install

        安装完成,开始配置,

        Tomcat端主机只需要在之前的基础上需改一个地方:

        在Engine中加入jvmRoute属性即可。

        Httpd端的配置,需要两个配置文件:

          ①/etc/httpd/conf.d/workers.propeties

    worker.list=srv_A,StatA
    worker.srv_A.host=192.168.1.101
    worker.srv_A.port=8009
    worker.Tomcat.type=ajp13
    worker.StatA.type=status

          ②/etc/httpd/conf.d/mod_jk.conf

    /*装载jk_module 路径是相对于/etc/httpd/下*/
    LoadModule jk_module modules/mod_jk.so
    
    JkWorkersFile /etc/httpd/conf.d/workers.properies
    JkLogFile logs/mod_jk.log
    JkLogLevel notice
    JkMount /* srv_A       此处的"/"是以webapps为根
    JkMount /jk_status StatA

        

  • 相关阅读:
    POJ 1265 Pcik定理
    POJ 1380 坐标旋转
    POJ 1788
    POJ 3714 平面最近点对
    POJ 1905 二分
    POJ 1151 矩形面积并
    POJ 1654 多边形面积
    ZOJ 1010 判断简单多边形+求面积
    about work
    Python 打印 不换行
  • 原文地址:https://www.cnblogs.com/trymybesttoimp/p/6289089.html
Copyright © 2020-2023  润新知