新項目中,有幾十個tomcat工程需要添加到nginx里面去,需要通過nginx進行轉(zhuǎn)發(fā)工作,如果一個個在nginx.conf里面做添加,豈不是累死了,而且容易出錯,怎么辦呢?
寫腳本半自動化來實現(xiàn)唄。
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個參數(shù),第一個是配置文件名,第二個是tomcat端口,第三個是工程名字,第四個是tomcat工程服務(wù)器ip地址
# 執(zhí)行如下這樣的命令,這樣的命令在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; ……..
# 然后執(zhí)行完后,會生成統(tǒng)一的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 # 這里很重要,加入proxy.conf就可以預(yù)防網(wǎng)頁地址欄里面將$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個參數(shù),第一個是配置文件名,第二個是tomcat端口,第三個是工程名字
# 執(zhí)行命令如下,可以在notepad++里面批量生成執(zhí)行命令: 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 ……
# 執(zhí)行結(jié)束后,會看到生成的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;
} |
執(zhí)行/usr/local/nginx/sbin/nginx -s reload; 然后生效;
利用這樣來配置80個tomcat工程,大概需要不到5分鐘,而且不會出錯,如果你一個個在nginx.conf里面添加,那費時費力而且容易有誤。