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

 

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

 

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

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.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里面添加,那费时费力而且容易有误。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值