新项目中,有几十个tomcat工程需要添加到nginx里面去,需要通过nginx进行转发工作,如果一个个在nginx.conf里面做添加,岂不是累死了,而且容易出错,怎么办呢?
写脚本半自动化来实现呗。
Tomcat工程的配置主要分2个部分,一个是upstream部分,一个是location部分。而且这两部分都可以独立形成一个conf配置文件,然后在nginx.conf里面通过include引用进来即可使用。
先来自动化说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; } |
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; } |
配置里面引入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;
} |
执行/usr/local/nginx/sbin/nginx -s reload; 然后生效;
利用这样来配置80个tomcat工程,大概需要不到5分钟,而且不会出错,如果你一个个在nginx.conf里面添加,那费时费力而且容易有误。