分享

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

 WindySky 2017-09-15

 

 

1、需求背景

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

 

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

 

 

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

 

 

 

2Upstream部分半自动化

先来自动化说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;

         }

 

 

 

3Location部分半自动化

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


# 这里很重要,加入proxy.conf就可以预防网页地址栏里面将$project_name_$port变成bright.域名的形式。

echo " include proxy.conf;" >> $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.;

 

        location ~*  ^/$ {

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

       }

        include bright_tomcat.conf;

 

  }

 

 

配置里面引入upstream文件

[nginx@dev_121_21 conf]$ vim nginx.conf

 

 

    server{

 

        listen 8081;

        server_name bright.;

 

        location ~*  ^/$ {

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

       }

        include bright_tomcat.conf;

 

  }

 

 

 

5、然后重新加载nginx

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

 

 

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

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多