nginx带宽资源调度脚本

#!/bin/env bash
#Usage: total web pv.
#add crontab
#0 * * * * /usr/local/scripts/download_create_nginx.sh
#add /etc/hosts 10.200.0.20 opscenter.dalegames.com
#http://opscenter.dalegames.com/backend/idcdataapi.php?get
#Created by cs.zhang <[email protected]> 2013-01-09
#Last Modified:

#get nginx weight
idc_api=`curl -s http://opscenter.dalegames.com/backend/idcdataapi.php?get`

#get download data(download1=SHT01,download2=JHT,download3=dnion)
echo ${idc_api} | sed ‘s/<br>/\n/g‘ > nginx_weight
download1=`sed -n "/SHT01/p" nginx_weight | awk -F":" ‘{print $2}‘`
download2=`sed -n "/JHT/p" nginx_weight | awk -F":" ‘{print $2}‘`
download3=`sed -n "/dnion/p" nginx_weight | awk -F":" ‘{print $2}‘`

cat > /usr/local/nginx/conf/vhosts/alldownload.dalegames.com.conf << "EOF"
upstream download_control {
   server 127.0.0.1:81 weight=ngxdownload1 max_fails=2 fail_timeout=5s;
   server 127.0.0.1:82 weight=ngxdownload2 max_fails=2 fail_timeout=5s;
   server 127.0.0.1:83 weight=ngxdownload3 max_fails=2 fail_timeout=5s;

check interval=3000 rise=2 fall=5 timeout=1000;
}

server {
    server_name alldownload.dalegames.com;
    listen 80;

proxy_set_header Host $host;
    proxy_set_header X-Real-IP  $remote_addr;
    proxy_set_header X-Forwarded-For  $remote_addr;
    access_log /home/logs/nginx/alldownload.dalegames.com.access.log main;
    error_log  /home/logs/nginx/alldownload.dalegames.com.error.log error;

location / {
        valid_referers none blocked *.dalegames.com *.dalegames.net *.dalegames.cn;
        if ($invalid_referer){
                return 403;
        }
        proxy_pass http://download_control;
        }

location ~* \.svn/ {
        deny all;
        }

}

server {
    server_name _;
    listen 81;

proxy_set_header Host $host;
    proxy_set_header X-Real-IP  $remote_addr;
    proxy_set_header X-Forwarded-For  $remote_addr;

location / {
        rewrite ^(.*)$ http://download1.dalegames.com$1 break; #SHT01
        }
}

server {
    server_name _;
    listen 82;

proxy_set_header Host $host;
    proxy_set_header X-Real-IP  $remote_addr;
    proxy_set_header X-Forwarded-For  $remote_addr;

location / {
        rewrite ^(.*)$ http://download2.dalegames.com$1 break; #JHT
        }
}

server {
    server_name _;
    listen 83;

proxy_set_header Host $host;
    proxy_set_header X-Real-IP  $remote_addr;
    proxy_set_header X-Forwarded-For  $remote_addr;

location / {
        rewrite ^(.*)$ http://download3.dalegames.com$1 break; #dnion
        }
}

EOF

sed -i -e "s/ngxdownload1/${download1}/" /usr/local/nginx/conf/vhosts/alldownload.dalegames.com.conf
sed -i -e "s/ngxdownload2/${download2}/" /usr/local/nginx/conf/vhosts/alldownload.dalegames.com.conf
sed -i -e "s/ngxdownload3/${download3}/" /usr/local/nginx/conf/vhosts/alldownload.dalegames.com.conf

service nginx configtest
if [ $? -ne 0 ]; then echo "Error: nginx conf fault!"; exit 127; fi
service nginx reload

exit 0

时间: 2024-10-24 04:20:44

nginx带宽资源调度脚本的相关文章

linux系统带宽监测脚本

服务器可能经常遇到服务器出带宽跑满,不知如何查询被哪个进程占用的情况,有一款开源的英文软件iftop功能比较强大可以查询相关信息,可能刚接触linux系统的朋友不太会使用,在此写了一个功能比较简单无需安装的带宽查看脚本,可以查询linux服务器当前带宽使用量,有需要的朋友可以试试  快速使用方法  1.下载脚本 ssh登录服务器后输入:  英文版: wget http://jinxiang.oss-cn-hangzhou.aliyuncs.com/vmnetcheck.sh  中文版: gbk版

nginx中lua脚本输出

在nginx中嵌入lua模块,能够使得nginx服务端的开发大大地方便,尤其是在实现一些额外的统计等小功能的时候.在nginx模块中直接lua嵌入脚本文件,可以直接使用nginx中lua模块的一些函数直接返回数据.可以调用的函数如下:ngx.say(),ngx.print(),return ,ngx.exit()等等,下面介绍一下这些函数的区别: (1)ngx.say()函数是返回该函数的参数加换行的数据,例如ngx.say("hello"),则返回数据hello/r/n, (2)ng

自动部署Nginx和nfs并架设Nginx集群脚本

本人经过多次尝试,简单完成了自动部署Nginx和nfs脚本,并且能够自动部署web反向代理集群,下面详细的阐述一下本人的思路.(以下脚本本人处于初学阶段,写的并不是很完善,所以需要后期进行整理和修正,请高手能够多多指教.) 本脚本需要注意的是: 1.这是针对centOS6.8,32位操作系统写的脚本文件,如果想在cenOS7中运行,就需要有些改动 2.这个脚本需要先安装代理服务器部分,再安装反向代理服务器,因为涉及到共享文件夹挂载的问题,所以需要有先后顺序: 3.今后本人会对此脚本进行更新和完善

nginx 启停脚本

#! /bin/sh# chkconfig: 35 85 15# description: This is nginx start and stop script PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin DESC="nginx daemon" NAME=nginx DAEMON=/usr/sbin/$NAME CONFIGFILE=/etc/nginx/$NAME.conf PIDFILE=/v

Linux中nginx服务器启动脚本

Linux中nginx服务器启动脚本,将此脚本放入/etc/init.d/目录下,进行启动和关闭,并用chkconfig命令将nginx加入到chkconfig管理中,设置开机自启动. 详细脚本如下: #!/bin/bash #author wangning #date 2017-7-14 #qq 1198143315 #Email [email protected] [ -f /etc/init.d/functions ] && . /etc/init.d/functions #chkc

nginx日志切割脚本,python实现

# 自搭建了个人博客 有需要交流学习的可以访问 www.wpython.com #!/usr/bin/env python   import datetime,os,sys,shutil   log_path = '/alidata/log/nginx/access/' log_file = 'www.wpython.com.log'   yesterday = (datetime.datetime.now() - datetime.timedelta(days = 1))   try:    

mysql 自动备份和nginx自动安装脚本

一.自动备份Mysql脚本: 如下脚本为mysql自动备份脚本,仅供参考,可以根据实际情况修改. #!/bin/sh #auto backup mysql #wugk #Define PATH定义变量 BAKDIR=/data/backup/mysql/`date +%Y-%m-%d` MYSQLDB=webapp MYSQLPW=backup MYSQLUSR=backup #must use root user run scripts 必须使用root用户运行,$UID为系统变量 if [

linux shell:nginx日志切割脚本

需求原因:nginx不具备日志切割功能,日志量较大,方便分析. 实现目的:完成nginx日志切割,并根据时间命名 简要命令: mv /usr/local/tengine/logs/access.log /usr/local/tengine/logs/access-date.log kill -USER1 Nginx主进程号. 解释: 通过mv命令重命名日志,并且通过kill -USER1 nginx-id的命令,告诉nginx需要写新的日志, 不然nginx不会在mv之后继续写日志. 我们可以通

nginx日志切割脚本,自动上传到日志服务器

nginx日志切割脚本,自动上传到日志服务器 1 nginx是yum方式安装,系统会自动生成nginx日志切割计划任务在/etc/logrotate.d/nginx下,把自动生成的计划任务删除,自己编写切割脚本,并传到统一存放日志的服务器上.  www.ahlinux.com 2 安装ncftp包,用于日志传输时使用. 3 简单切割脚本如下: #!/bin/bash PATH=/bin:/sbin:/usr/bin:/usr/sbin export PATH yesterday=`date +%