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里面添加,那费时费力而且容易有误。
相关文章推荐
- 用nginx转发请求tomcat 如何配置访问日志获取真实ip
- Nginx+Tomcat配置转发到不同域名下的不同项目
- 用nginx转发请求tomcat 如何配置访问日志获取真实ip
- nginx 转发到 tomcat 的 ServerName 配置问题
- nginx 配置转发到tomcat
- nginx系列-06-nginx配置https并转发请求至后端tomcat-商用https证书
- apache,nginx及tomcat中配置SSL双向访问
- 将nginx配置成url_hash转发方式
- 教你如何配置Tomcat 绑定指定目录的工程文件
- 手动在TOMCAT下配置WEB工程
- nginx + tomcat 集群配置详解, 实现负载均衡 URLRewrite Session复制
- RHEL5(CentOS)下nginx+php+mysql+tomcat+memchached配置全过程(转)
- 使用Nginx如何配置Tomcat访问日志记录真实IP
- tomcat 工程指向配置方法
- Tomcat + Nginx 负载均衡配置(一台tomcat宕机响应缓慢的问题)
- Apache,tomcat,nginx,apache+tomcat,nginx+tomcat自动化安装脚本
- nginx+tomcat的安装配置
- tomcat 5.5连接池配置,如何让工程为默认工程
- 在TOMCAT下配置工程的默认访问
- Tomcat中web工程虚拟目录的配置方法