IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    [原]Nginx 自动化批量配置tomcat工程转发

    mchdba发表于 2016-11-21 22:16:31
    love 0

     

     

    1、需求背景

    新项目中,有几十个tomcat工程需要添加到nginx里面去,需要通过nginx进行转发工作,如果一个个在nginx.conf里面做添加,岂不是累死了,而且容易出错,怎么办呢?

     

    写脚本半自动化来实现呗。

     

     

    Tomcat工程的配置主要分2个部分,一个是upstream部分,一个是location部分。而且这两部分都可以独立形成一个conf配置文件,然后在nginx.conf里面通过include引用进来即可使用。

     

     

     

    2、Upstream部分半自动化

    先来自动化说upstream部分:

     

    # a_auto_upstream.sh

    [nginx@dev_121_21 conf]$ more  a_auto_upstream.sh

    #!/bin/bash

    # $1 confile file name

    # $2 port

    # $3 project name

    # $4 tomcat server ip address

    echo "       upstream $3_$2 {" >> $1

    echo "                server $4:$2;" >> $1

    echo "       }" >>$1

    echo "" >> $1

    [nginx@dev_121_21 conf]$

     

    生成配置文件:

    # 有4个参数,第一个是配置文件名,第二个是tomcat端口,第三个是工程名字,第四个是tomcat工程服务器ip地址

     

    # 执行如下这样的命令,这样的命令在notepad++工具里面,能批量生成。

     

    bash -x a_auto_upstream.sh bright_upstream.conf 8600 financeWeb 192.168.121.21;

    bash -x a_auto_upstream.sh bright_upstream.conf 8700 occ_jbpm_service 192.168.121.21;

    bash -x a_auto_upstream.sh bright_upstream.conf 8700 jbpmAdminWeb 192.168.121.21;

    ……..

     

    # 然后执行完后,会生成统一的upstream.conf配置文件:

    [nginx@dev_121_21 conf]$ more bright_upstream.conf

             upstream PLATFORM_AUTH_Service_8000 {

                       server 192.168.121.21:8000;

             }

     

             upstream PLATFORM_SSO_Service_8000 {

                       server 192.168.121.21:8000;

             }

     

             upstream PLATFORM_SSO_Web_8100 {

                       server 192.168.121.21:8100;

             }

     

             upstream PLATFORM_AUTH_Web_8100 {

                       server 192.168.121.21:8100;

             }

     

     

     

    3、Location部分半自动化

    Location部分类似前面的upstream部分,脚本如下:

    # 编写脚本如下

    [nginx@dev_121_21 conf]$ more a_auto_tomcat.sh

    #!/bin/bash

    # $1 confile file name

    # $2 port

    # $3 project name

    echo "       location ~* ^/$3/.*$ {" >> $1

    echo "                include deny.conf;" >> $1

    echo "                proxy_pass http://$3_$2;" >>$1

    echo "" >>$1

    echo "                error_log  logs/$3_access.log error;" >> $1

    echo "                access_log  logs/$3_error.log sso;" >> $1

    echo "       }" >> $1

    echo "" >> $1

    [nginx@dev_121_21 conf]$

     

     

    # 有3个参数,第一个是配置文件名,第二个是tomcat端口,第三个是工程名字

     

    # 执行命令如下,可以在notepad++里面批量生成执行命令:

    bash -x a_auto_tomcat.sh bright_tomcat.conf 8000 PLATFORM_AUTH_Service

    bash -x a_auto_tomcat.sh bright_tomcat.conf 8000 PLATFORM_SSO_Service

    bash -x a_auto_tomcat.sh bright_tomcat.conf 8100 PLATFORM_SSO_Web

    bash -x a_auto_tomcat.sh bright_tomcat.conf 8100 PLATFORM_AUTH_Web

    bash -x a_auto_tomcat.sh bright_tomcat.conf 8100 PLATFORM_MANAGER_Web

    bash -x a_auto_tomcat.sh bright_tomcat.conf 8200 PLATFORM_MANAGER_Web

    ……

     

    # 执行结束后,会看到生成的location文件,如下所示:

    [nginx@dev_121_21 conf]$ more bright_tomcat.conf

    location ~* ^/PLATFORM_AUTH_Service/.*$ {

             include deny.conf;

             proxy_pass http://PLATFORM_AUTH_Service_8000;

     

             error_log  logs/PLATFORM_AUTH_Service_access.log error;

             access_log  logs/PLATFORM_AUTH_Service_error.log sso;

    }

     

    location ~* ^/PLATFORM_SSO_Service/.*$ {

             include deny.conf;

             proxy_pass http://PLATFORM_SSO_Service_8000;

     

             error_log  logs/PLATFORM_SSO_Service_access.log error;

             access_log  logs/PLATFORM_SSO_Service_error.log sso;

    }

     

    location ~* ^/PLATFORM_SSO_Web/.*$ {

             include deny.conf;

             proxy_pass http://PLATFORM_SSO_Web_8100;

     

             error_log  logs/PLATFORM_SSO_Web_access.log error;

             access_log  logs/PLATFORM_SSO_Web_error.log sso;

    }

     

    location ~* ^/PLATFORM_AUTH_Web/.*$ {

             include deny.conf;

             proxy_pass http://PLATFORM_AUTH_Web_8100;

     

             error_log  logs/PLATFORM_AUTH_Web_access.log error;

             access_log  logs/PLATFORM_AUTH_Web_error.log sso;

    }

     

     

    4、在nginx.conf里面配置

    配置里面引入location文件

    [nginx@dev_121_21 conf]$ vim nginx.conf

     

            include lvdi_tomcat.conf;

     

      }

     

     

        server{

     

            listen 8081;

            server_name bright.test.com;

     

            location ~*  ^/$ {

             rewrite ^/$ http://bright.test.com/enrolmentWeb/enrolment/main.htm;

           }

            include bright_tomcat.conf;

     

      }

     

     

    配置里面引入upstream文件

    [nginx@dev_121_21 conf]$ vim nginx.conf

     

     

        server{

     

            listen 8081;

            server_name bright.test.com;

     

            location ~*  ^/$ {

             rewrite ^/$ http://bright.test.com/enrolmentWeb/enrolment/main.htm;

           }

            include bright_tomcat.conf;

     

      }

     

     

     

    5、然后重新加载nginx

    执行/usr/local/nginx/sbin/nginx -s reload; 然后生效;

     

     

    利用这样来配置80个tomcat工程,大概需要不到5分钟,而且不会出错,如果你一个个在nginx.conf里面添加,那费时费力而且容易有误。



沪ICP备19023445号-2号
友情链接