最新公告
  • 欢迎您光临编程知识分享网 加入我们
  • Nginx的反向代理负载均衡以及日志设置切割

    Nginx是一个高并发,高性能的服务器,可以进行反向代理以及网站的负载均衡。这些功能的运用都在配置文件中,也就是Nginx安装目录下的conf/nginx.conf。

    nginx.conf

    1. 先来看下Nginx默认的配置文件以及说明:

    #user  nobody;#----------------------------------------------# user用来配置使用的用户和组,默认是没有进行配置的:# 如下配置表示配置aries这个用户以及aries这个用户组:#         user aries aries #----------------------------------------------
    worker_processes  1;
    #----------------------------------------------# worker_processes 用来配置Nginx开启的进程数,#                  一般配置等于cpu的核数。#----------------------------------------------
    #error_log  logs/error.log;
    #error_log  logs/error.log  notice;
    #error_log  logs/error.log  info;#---------------------------------------------# error_log 全局错误日志配置,后面跟生成的#           志文件的位置,默认在Nginx的logs#           文件夹中,以及日志级别。# [ debug | info | notice | warn | error | crit ]
    #---------------------------------------------
    #pid        logs/nginx.pid;
    #---------------------------------------------
    # pid 当Nginx启动时会生成一个nginx.pid的文件,#     里面存放的是Nginx主线程的id号。#---------------------------------------------
    #工作模式与连接数上限events {    use epoll;
        worker_connections  1024;  #配置Nginx单个进程允许的最大连接数。
    }
    
    #设定http服务器
    http {
        include       mime.types;  #文件扩展名与文件类型映射表
        default_type  application/octet-stream; # 默认文件类型
    
        #log_format  main  '$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  main;
        #-----------------------------------------------------------------------    # log_format  配置日志格式,后面跟日志格式的名称和配置的格式,参数是Nginx中    #             一些内置的属性。    # access_log  配置日志的存放位置,以及后面跟日志打印格式内容。    # ----------------------------------------------------------------------
        sendfile        on; # 开启高效文件传输模式,sendfile指令指定nginx是否调用sendfile函数来输出文件
        #tcp_nopush     on; # 防止网络阻塞
    
        #keepalive_timeout  0;
        keepalive_timeout  65; 
    
        #gzip  on;    # 配置开启gzip压缩
        #虚拟主机的配置
        server {
            listen       80;        # 监听端口
                    server_name  localhost;
            # 监听主机名称或者ip
                    #charset koi8-r;
            # 默认编码
            #access_log  logs/host.access.log  main;
            # 日志
            location / {
                root   html;
                index  index.html index.htm;
            }        #-------------------------------------------------        #  配置的访问位置,默认是html目录下的index.html文件,      # 如果不存在则找index.htm文件        #-------------------------------------------------
    
            #error_page  404              /404.html;
            #错误页面配置      
            # redirect server error pages to the static page /50x.html
            #
            error_page   500 502 503 504  /50x.html;
            location = /50x.html {
                root   html;
            }
    }

    “http”表示配置的http协议的请求,里面可以配置多台server(虚拟主机),基本的配置格式如下:

    ......
    
    event{
    
            ......   
    
        }
    
    http{
    
          .....
    
          server {
    
                    ......
    
           }
    
          server {
    
                    ......
    
           }
    
         }

    2. 下面配置负载均衡:

    #user  nobody;
    worker_processes  1;
    
    events {
        use epoll;
        worker_connections  1024;
    }
    
    http {
        include       mime.types;
        default_type  application/octet-stream;
        keepalive_timeout  65;
    
        log_format mystyle '$remote_addr - $remote_user [$time_local] "$request" '
                           '$status $body_bytes_sent "$http_referer" '
                           '"$http_user_agent" "$http_x_forwarded_for"';
                       
        upstream mycomputers {
            #upstream的负载均衡,weight是权重,可以根据机器配置定义权重;weigth参数表示权值,权值越大被分配到的几率越大;down表示当前主机不可用。
            server 192.168.137.111:80 weight=2;
            server 192.168.137.114:80 weight=2 ;
            server 192.168.137.113:80 weight=2 down;
        }
    
        server {
            listen       80;
            server_name  localhost;
    
            location / {
                proxy_pass http://mycomputers; # 将请求按照权重分配给上面配置的服务器
                proxy_set_header X-UserRealIP-For $remote_addr;
                # 因为用户请求服务,先到Nginx所以在服务端如果在服务端直接过去请求IP得到的是Nginx的主机,所以在这里去出用户的真实IP,设置在请求头中,服务端才可以获取用户的真实IP。        
            }
                   
            access_log logs/access.log mystyle;
        }
    }

    3. 反向代理配置

    server {             listen       80;
            server_name  localhost;
    
            location / {
                proxy_pass   http://192.168.137.114:8080; #代理的内部IP服务器            proxy_redirect off;       proxy_set_header X-Real-IP $remote_addr;
            }     
            access_log logs/access.log mystyle;
        }

    4. 动静分离配置

    server{
            listen       80;
            server_name  localhost;        
            
            #本地动静分离反向代理配置
            #所有jsp的页面均交由tomcat或其他服务器处理
            location ~ \.(jsp|jspx|do)?$ {
                proxy_pass http://127.0.0.1:8080;
                proxy_set_header Host $host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            }
            
            #所有静态文件由nginx直接读取不经过tomcat或resin
            location ~ .*\.(htm|html|gif|jpg|jpeg|png|bmp|swf|ioc|rar|zip|txt|flv|mid|doc|ppt|pdf|xls|mp3|wma)${
                expires 15d;
            }
    
            location ~ .*\.(js|css)?${ 
                expires 1h;
            }
    }

    5. Nginx日志的切割

    a 写如下脚本存放到 /usr/local/nginx/sbin目录下命名nginx_cut_log.sh, 作用是暂停nginx服务并备份日志文件,然后重启。

    #!/bin/bash
    BASE_PATH=/usr/local/nginx
    LOGS_PATH=${BASE_PATH}/logs
    LOGS_PATH_BAK=${LOGS_PATH}/logs_bak
    BAK_TIME=`/bin/date -d yesterday +%Y%m%d`
    
    $BASE_PATH/sbin/nginx -s stop
    
    mv $LOGS_PATH/access.log $LOGS_PATH_BAK/access_$BAK_TIME.log
    
    $BASE_PATH/sbin/nginx

    给所有用户添加执行权限: chmod a+x nginx_cut_log.sh

    b 输入: crontab -e

    插入如下代码: 00 00  *  *  *  sh /usr/local/nginx/nginx_cut_log.sh

    此操作是让linux系统每天晚上12点整执行nginx_cut_log.sh脚本进行日志切割备份。

    测试配置: */1 * * * * sh /usr/local/nginx/sbin/nginx_cut_log.sh       每分钟执行一次

    BAK_TIME=`/bin/date -d yesterday +%Y%m%d%H%M`

    效果如下:

     

    以上都只是最基本的配置,还有其他各种细致的配置属性,推荐《nginx 实战》进行系统的了解和学习。

    赞赏

    微信赞赏支付宝赞赏

    编程知识分享网,一个有趣的平台!
    编程知识分享网|编程教程|资源下载|源码下载 » Nginx的反向代理负载均衡以及日志设置切割

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    关于编程知识分享网(www.ittce.com)
    编程知识分享网,一个有趣的平台,小心有毒!

    发表评论

    提供最优质的资源集合

    立即查看 了解详情
    升级SVIP尊享更多特权立即升级