Shell脚本创建Nginx的upstream及location配置文件

#!/bin/sh
#####################################################
#    Name:                create_nginx_conf.sh
#    Version:            V1.0
#    Author:            运维菜鸟
#    Description:        创建nginx相关配置文件
#    Create Date:        2017-07-04
#    Email:
#####################################################

#env.sh文件内容格式:10.10.2.6=basics-price-service;

#function_name:要调用的方法
function_name=$1
#ns_type:项目环境名称
ns_type=$2
#env_file:env.sh文件具体路径
env_file_path=$3

#判断env.sh是否存在
function check_env_file() {
    if [ -f ${env_file_path} ];then
        echo "the ${env_file_path} is exist."
        echo -e "\n\n"
    else
        echo "the ${env_file_path} is not exist."
        exit 1
    fi
}

#生成nginx的location段的配置文件
function create_location(){
    for pool in `cat ${env_file_path} | cut -d "=" -f2 | cut -d ";" -f1 | sort | uniq`;do
        echo -e "location /${pool} {\n\tproxy_pass http://${ns_type}-${pool}/${pool};\n\tproxy_set_header Host \$host;\n\tproxy_set_header X-Real-IP \$remote_addr;\n\tproxy_set_header X-Forwarded-For  \$proxy_add_x_forwarded_for;\n\tbreak;\n}"
    done
}

#生成nginx的upstream配置文件
function create_upstream_conf() {
    for pool in `cat ${env_file_path} | cut -d "=" -f2 | cut -d ";" -f1 | sort | uniq`;do
        ip_list=`cat ${env_file_path} | egrep "${pool};" | cut -d "=" -f1  | sort |uniq`
        #pool_port=`cat env.sh | egrep "${pool}=" | cut -d "=" -f3 | cut -d ";" -f1| sort | uniq`
        echo -e "upstream ${ns_type}-${pool} {"
        for ip in ${ip_list[*]};do
            echo -e "\tserver ${ip}:8080;"
        done
        echo  "}"
    done
}

if [ $# -eq 3 ];then
    case $1 in
        location)
            check_env_file;
            create_location;
            ;;
        upstream)
            check_env_file;
            create_upstream_conf;
            ;;
        *)
            $"Usage: {sh create_nginx_conf.sh location hh-prod /data/env.sh|sh create_nginx_conf.sh upstream hh-prod /data/env.sh}"
            exit 3
    esac
else
    echo "variables count not eq 5.please check the usage."
    echo "Usage: {sh create_nginx_conf.sh location hh-prod /data/env.sh|sh create_nginx_conf.sh upstream hh-prod /data/env.sh}."
fi
时间: 2024-11-09 03:54:14

Shell脚本创建Nginx的upstream及location配置文件的相关文章

Linux下添加shell脚本使得nginx日志每天定时切割压缩

Linux下添加shell脚本使得nginx日志每天定时切割压缩一 简介 对于nginx的日志文件,特别是access日志,如果我们不做任何处理的话,最后这个文件将会变得非常庞大 这时,无论是出现异常时查日志,还是使用"GoAccess"等工具对日志进行分析都将会变得非常麻烦.因此,每天定时对nginx日志进行切割压缩就非常有必要了 二 实现 我的实现思路是每天晚上接近12点时定时执行脚本.其脚本内容就是将当前的nginx日志先按照当天日期进行重命名接着进行压缩,最后是新建空白的ngi

用shell脚本创建用户

用shell脚本创建20个用户,要求给20个用户指定家目录为/share/home/中,并且给每一个用户随机指定一个密码,最后把这些用户信息记录在日志里! [[email protected] sbin]# vim 2.sh          mkdir -p  /share/home else         mkdir -p  /share/home fi create_user(){ for i in `seq 3 6` ;do         useradd -d /share/home

linux运维学习shell脚本监控nginx服务

菜鸟学习shell脚本后,动手练手简单小实验,使用shell脚本判断nginx是否正常运行,如果没有运行将nginx服务启动起来. 一.基于进程判断 1.获取nginx进程来判断该服务是否正常启动. ps -ef | grep nginx | grep -v grep | wc -l    输出进程行数 然后判断是否为2 如果不是说明该服务没有启动. grep -v grep  用来排除掉您所使用grep产生的进程. 2.shell 脚本编写 先定义一个变量Web #!/bin/bash Web

shell脚本编写nginx部署脚本

下面为shell脚本编写的nginx的安装及修改nginx.conf的脚本,脚本比较简单: #!/bin/bash function yum_install(){ yum install epel-release -y yum install nginx -y} yum_install pw=/etc/nginx/nginx.confread -p "请输入组名:" zuread -p "请输入第一个ip地址:" ip1read -p "请输入第二个ip地

开发shell脚本检查Nginx实战分享

一.本脚本实现功能: 1.自动检查Nginx下面的代理节点是否正常 2.通过页面显示状态,有问题的节点给出页面报警及声音报警. 3.增加新节点,页面自动载入新节点,无需修改程序. 二.守护检查脚本 [[email protected] extra]# cd /server/scripts/ [[email protected] scripts]# vi nginx_check.sh #!/bin/bash # oldboy training 21 zhangyao # Defined varia

使用linux客户端执行shell脚本创建数据库初始化数据库中文乱码问题

定义了一个shell脚本,可以根据其他的多个sql文件创建数据库,并且使用包含初始化数据的sql文件初始化数据库. 在windows下使用linux客户端连接到linux服务器,执行shell脚本后,发现创建出的数据库有中文乱码. 确定是字符集设置问题.查看数据库,发现字符集设置如下,很多还是 latin1. mysql> show variables like 'character_set_%';+--------------------------+---------------------

Linux编程 20 shell编程(shell脚本创建,echo显示信息)

一概述 前面19章里已经掌握了linux系统和命令行的基础知识,从本章开始继续学习shell脚本的基础知识.在大量编辑shell脚本前,先来学习下一些基本概念. 1.1    使用多个命令 Shell可以让多个命令串起来,一次执行完成,可以把它们放在同一行中,用分号隔开,如下所示: 上面就是一个简单的脚本了,用到了两个bash shell命令,但每次运行之前,都必须在命令提示符下输入整个命令.如果将命令组合成一个简单的文本文件,需要时运行这个文本文件就行了. 1.2    创建shell 脚本文

shell 脚本分析Nginx 日志

本脚本分析Nginx 负载均衡器的日志: #!/bin/bash if [ $# -eq 0 ]; then     echo "Error:please specify logfile."     exit 0 else     LOG=$1 fi if [ ! -f $1 ]; then     echo "Sorry,sir. I cat't find this apache log file, pls try again!"     exit 0 fi ##

shell脚本:nginx反向代理节点状态检查

lvs可以使用ipvsam -Ln 查看RS节点的情况,当RS宕机后剔除,当RS恢复后自动加入,nginx上面无法查看,需要安装插件或自己写脚本实现: 反向代理的配置如下:(server 去掉前面的空格,为了方便后面脚本使用sed做文本替换:) [[email protected] vhosts]# cat upstream01.conf upstream backend { server 192.168.20.10:80 weight=5; server 192.168.20.11:80 we