nginx 负载均衡配置

1、安装相关依赖    yum -y install gcc gcc-c++ make libtool zlib zlib-devel openssl openssl-devel pcre pcre-devel

2、另外下载模块:nginx_upstream_check_module-0.3.0.tar.gz —— 检查后端服务器的状态  https://github.com/yaoweibin/nginx_upstream_check_module/releases

3、加压pcre  tar -xzf pcre-8.34.tar.gz  mv pcre-8.34 /usr/local/pcre

       解压并重命名为

v古典风格

3、cd nginx-1.20.1   

  ./configure --prefix=/usr/local/nginx --with-pcre=/usr/local/pcre --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module --with-http_realip_module  --with-http_image_filter_module --add-module=/usr/local/nginx_upstream

make && make install

4、/usr/local/nginx/sbin/nginx -v

5、添加运行使用用户

6、/usr/sbin/groupadd nginx

7、/usr/sbin/useradd -g nginx nginx

8、检查配置文件nginx.conf的正确性命令:

/usr/local/nginx/sbin/nginx -t

9、Nginx 启动命令如下:

/usr/local/nginx/sbin/nginx

/usr/local/nginx/sbin/nginx -s reopen

测试一下是否有错:/usr/local/nginx/sbin/nginx -t

平滑重启:/usr/local/nginx/sbin/nginx -s reload

10、加入系统服务

vim /etc/init.d/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=" /usr/local/nginx/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/local/nginx/sbin/nginx"

prog=$(basename $nginx)

NGINX_CONF_FILE="/usr/local/nginx/conf/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:.*--user=" | sed 's/[^*]*--user=\([^ ]*\).*/\1/g' -`

  if [ -n "$user" ]; then

      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

    fi

}

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 $prog -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


11、 设置执行权限chmod +x /etc/init.d/nginx

12、设置中的模式开机启动/sbin/chkconfig nginx on

检查一下## 显示开机启动自动列表是否存在nginx chkconfig --list # 显示开机自动启动的服务sudo chkconfig --list nginx

nginx 0:off 1:off 2:on 3:on 4:on 5:on 6:off

完成!

之后,就可以使用以下命令了

service nginx start

service nginx stop

service nginx restart

service nginx reload

service nginx status

将nginx 加入系统变量

修改/etc/profile 文件

  vim /etc/profile

1

添加PATH

如果已经存在PATH 也只需要在下面添加更多的PATH 两者之间不冲突

#  在文件中添加nginx 的执行文件。

export PATH=$PATH:/usr/local/nginx/sbin

1

2

使立即生效

保存文件后PATH 不会立即生效需要执行 source /etc/profile

source /etc/profile

加入执行权限chmod +x nginx

先将nginx服务加入chkconfig管理列表:

chkconfig --add /etc/init.d/nginx

加完这个之后,就可以使用service对nginx进行启动,重启等操作了。

service nginx start

service nginx stop

13、设置nginx 反向代理

vim /usr/local/nginx/conf/nginx.comf

#user nobody;

worker_processes  1;

#error_log  logs/error.log;

#error_log  logs/error.log  notice;

#error_log  logs/error.log  info;

#pid        logs/nginx.pid;

events {

    worker_connections  1024;

}

http {

        include      mime.types;  #文件扩展名与文件类型映射表

        default_type  application/octet-stream; #默认文件类型,默认为text/plain

        #access_log off; #取消服务日志   

        log_format myFormat ' $remote_addr–$remote_user [$time_local] $request $status $body_bytes_sent $http_referer $http_user_agent $http_x_forwarded_for'; #自定义格式

        access_log logs/access.log myFormat;  #combined为日志格式的默认值

        sendfile on;  #允许sendfile方式传输文件,默认为off,可以在http块,server块,location块。

        sendfile_max_chunk 100k;  #每个进程每次调用传输数量不能大于设定的值,默认为0,即不设上限。

        keepalive_timeout 65;  #连接超时时间,默认为75s,可以在http,server,location块。

        proxy_connect_timeout 1;  #nginx服务器与被代理的服务器建立连接的超时时间,默认60秒

        proxy_read_timeout 1; #nginx服务器想被代理服务器组发出read请求后,等待响应的超时间,默认为60秒。

        proxy_send_timeout 1; #nginx服务器想被代理服务器组发出write请求后,等待响应的超时间,默认为60秒。

        proxy_http_version 1.0 ; #Nginx服务器提供代理服务的http协议版本1.0,1.1,默认设置为1.0版本。

        #proxy_method get;    #支持客户端的请求方法。post/get;

        proxy_ignore_client_abort on;  #客户端断网时,nginx服务器是否终端对被代理服务器的请求。默认为off。

        proxy_ignore_headers "Expires" "Set-Cookie";  #Nginx服务器不处理设置的http相应投中的头域,这里空格隔开可以设置多个。

        proxy_intercept_errors on;    #如果被代理服务器返回的状态码为400或者大于400,设置的error_page配置起作用。默认为off。

        proxy_headers_hash_max_size 1024; #存放http报文头的哈希表容量上限,默认为512个字符。

        proxy_headers_hash_bucket_size 128; #nginx服务器申请存放http报文头的哈希表容量大小。默认为64个字符。

        proxy_next_upstream timeout;  #反向代理upstream中设置的服务器组,出现故障时,被代理服务器返回的状态值。error|timeout|invalid_header|http_500|http_502|http_503|http_504|http_404|off

        #proxy_ssl_session_reuse on; 默认为on,如果我们在错误日志中发现“SSL3_GET_FINSHED:digest check failed”的情况时,可以将该指令设置为off。

upstream web {

    # 默认以轮询策

    server 192.168.110.251 ;

    server 192.168.110.252 backup;

}

server {

        listen      80;

    # 服务器名称,随便起名

        server_name  www.proxy.com;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {

          # root  html;

          # index  index.html index.htm;

          #设置主机头和客户端真实地址,以便服务器获取客户端真实IP

          proxy_set_header Host $host;

          proxy_set_header X-Real-IP $remote_addr;

          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

          #禁用缓存

          proxy_buffering off;

          # 反向代理的地址

          proxy_pass http://web;

        }

}

}

你可能感兴趣的:(nginx 负载均衡配置)