• 高并发与负载均衡-nginx-安装-配置-location-负载均衡


     

    自我扩展知识:异步io

     

     

     

     

     

    nginx启动脚本:

    #!/bin/sh
    #
    # nginx - this script starts and stops the nginx daemon
    #
    # chkconfig:   - 85 15
    # description:  NGINX is an HTTP(S) server, HTTP(S) reverse 
    #               proxy and IMAP/POP3 proxy server
    # processname: nginx
    # config:      /etc/nginx/nginx.conf
    # config:      /etc/sysconfig/nginx
    # pidfile:     /var/run/nginx.pid
    
    # Source function library.
    . /etc/rc.d/init.d/functions
    
    # Source networking configuration.
    . /etc/sysconfig/network
    
    # Check that networking is up.
    [ "$NETWORKING" = "no" ] && exit 0
    
    nginx="/usr/sbin/nginx"
    prog=$(basename $nginx)
    
    NGINX_CONF_FILE="/etc/nginx/nginx.conf"
    
    [ -f /etc/sysconfig/nginx ] && . /etc/sysconfig/nginx
    
    lockfile=/var/lock/subsys/nginx
    
    make_dirs() {
       # make required directories
       user=`$nginx -V 2>&1 | grep "configure arguments:" | sed 's/[^*]*--user=([^ ]*).*/1/g' -`
       if [ -z "`grep $user /etc/passwd`" ]; then
           useradd -M -s /bin/nologin $user
       fi
       options=`$nginx -V 2>&1 | grep 'configure arguments:'`
       for opt in $options; do
           if [ `echo $opt | grep '.*-temp-path'` ]; then
               value=`echo $opt | cut -d "=" -f 2`
               if [ ! -d "$value" ]; then
                   # echo "creating" $value
                   mkdir -p $value && chown -R $user $value
               fi
           fi
       done
    }
    
    start() {
        [ -x $nginx ] || exit 5
        [ -f $NGINX_CONF_FILE ] || exit 6
        make_dirs
        echo -n $"Starting $prog: "
        daemon $nginx -c $NGINX_CONF_FILE
        retval=$?
        echo
        [ $retval -eq 0 ] && touch $lockfile
        return $retval
    }
    
    stop() {
        echo -n $"Stopping $prog: "
        killproc $prog -QUIT
        retval=$?
        echo
        [ $retval -eq 0 ] && rm -f $lockfile
        return $retval
    }
    
    restart() {
        configtest || return $?
        stop
        sleep 1
        start
    }
    
    reload() {
        configtest || return $?
        echo -n $"Reloading $prog: "
        killproc $nginx -HUP
        RETVAL=$?
        echo
    }
    
    force_reload() {
        restart
    }
    
    configtest() {
      $nginx -t -c $NGINX_CONF_FILE
    }
    
    rh_status() {
        status $prog
    }
    
    rh_status_q() {
        rh_status >/dev/null 2>&1
    }
    
    case "$1" in
        start)
            rh_status_q && exit 0
            $1
            ;;
        stop)
            rh_status_q || exit 0
            $1
            ;;
        restart|configtest)
            $1
            ;;
        reload)
            rh_status_q || exit 7
            $1
            ;;
        force-reload)
            force_reload
            ;;
        status)
            rh_status
            ;;
        condrestart|try-restart)
            rh_status_q || exit 0
                ;;
        *)
            echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}"
            exit 2
    esac

     

     

     

     

     

     

     

     

    1、下载tengine
    下载
    下边是使用linux直接下载,或者用windows下载然后上传到linux上,但是这样比较麻烦。

    wget http://tengine.taobao.org/download/tengine-2.2.0.tar.gz

    解压
    tar -zxvf tengine-2.2.0.tar.gz

    2、编译安装
    安装编译依赖
    yum -y install gcc gcc-c++ autoconf automake

    yum -y install openssl-devel pcre-devel zlib-devel

    编译tengine

    进入tengine解压目录,必须进入解压以后的目录,负责后边无法继续下去

    cd tengine-2.2.0


    检查编译环境,注意:–prefix 后面跟着的是你的nginx安装的路径

    ./configure --prefix=/opt/sxt/nginx


    --with-http_gzip_static_module
    --with-http_realip_module
    --with-http_stub_status_module
    --with-http_concat_module
    --with-pcre

    如果这一步没有提示缺少依赖的话,说明检查通过,如果缺少依赖,请看上边安装依赖库。接下来就是编译了。

    make && make install

    //进入你的安装目录

     /opt/sxt/nginx/sbin

    //执行nginx的启动文件

     

    cd  /opt/sxt/nginx/conf

     master 是 worker 的父进程

     

     

     

     

     

     

     

     

     

     http://tengine.taobao.org/nginx_docs/cn/docs/http/ngx_http_core_module.html

     

     

     

     

     

     

     

     负载均衡:

     

     

     ----------------------------------------------------------------------------------------------------------------------------------------

     这之后和上面没有关系 只是用于知识参考

    3、加入系统服务,设置开机启动
    创建启动文件
    点击nginx启动文件下载启动文件,可能会因为windows的编码问题导致linux无法识别,所以用windows下载,然后用记事本之类的软件打开。然后Linux进入cd /etc/init.d/,用vi编辑器创建文件vi nginx。吧记事本里的直接全部复制到vi编辑器里。
    注意:这块一定要记得修改你的安装路径,和配置路径
    //这是你电脑nginx的启动文件的地址,
    nginx="/home/msoft/tengine/sbin/nginx"


    //nginx的配置文件地址
    NGINX_CONF_FILE="/home/msoft/tengine/conf/nginx.conf"


    然后保存文件,这时候会发现nginx这文件颜色不是绿色的,表示没有执行权限。

    配置开机启动
    赋予执行权限

    chmod 755 nginx

    将该文件加到系统服务

    chkconfig --add nginx

    设置开机启动

    chkconfig nginx on

    查看是否添加成功

    chkconfig --list nginx

    启动,停止,重新装载

    service nginx start|stop|reload


    4、配置反向代理
    进入你的nginx的你装目录

    cd /home/msoft/tengine/conf/


    vi nginx.conf


    配置反向代理,目录结构看下图,可以配置多个,案例中只配置了一个。

    upstream myback {
    server localhost:8080;
    server 192.168.1.110:8080;
    }


    location / {
    proxy_pass http://myback ;
    proxy_set_header X-Real-IP $remote_addr;
    client_max_body_size 100m;
    }

    注意:这块直接配置ip:端口,也可以转发到具体某个模块上,图中/yasaka,那个就是配置的某个模块。到时候在浏览器直接输入以下地址即可被代理到具体的后端服务器上。

    http://yasaka.iask.in/

    http://yasaka.iask.in/yasaka

    配置健康检查
    tengine自带健康检查,加入如下配置,配置结构看图片
    这是案例地址http://yasaka.iask.in/status

    location /status {
    check_status;
    }


    然后在反向代理中加入,那些后端服务器需要进行健康检查。

    check interval=3000 rise=2 fall=5 timeout=1000 type=http;
    check_http_send "HEAD / HTTP/1.0 ";
    check_http_expect_alive http_2xx http_3xx;

    注意:这里记得换行,否则会解析错误


    6、总结
    本文介绍了tengine(nginx)编译安装,加入开机启动,配置反向代理和健康检查一整套。具体的细节或者哪一个模块想深入,请查阅官方文档,我就不在这里重复的造轮子了。

    详细地址: https://blog.csdn.net/yp090416/article/details/75048966

  • 相关阅读:
    爱奇艺笔试题 输出01020304... ...
    ThreadPoolExecutor 中为什么WorkQueue会在corePoolSize满了之后入队
    jvisualvm 的使用
    连续子数组的最大和
    最长连续子序列
    leetcode 需要了解的知识点储备
    java String
    mysql MVCC
    java 批量导出(zip文件)
    java 中接口调用
  • 原文地址:https://www.cnblogs.com/LXL616/p/10799006.html
Copyright © 2020-2023  润新知