您的位置:首页 > 运维架构 > Tomcat

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

2016-11-21 22:16 393 查看
 
 

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里面添加,那费时费力而且容易有误。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: