Nginx概述

关于Nginx

Nginx是一个轻量级、高性能、稳定性高、并发性好的HTTP和反向代理服务器。也是由于其的特性,其应用非常广。

Nginx的主要功能

  • 反向代理

    • 是用来代理服务器的,代理我们要访问的目标服务器。代理服务器接受请求,然后将请求转发给内部网络的服务器(集群化),并将从服务器上得到的结果返回给客户端,此时代理服务器对外就表现为一个服务器。
      Nginx在反向代理上,提供灵活的功能,可以根据不同的正则采用不同的转发策略,如图设置好后不同的请求就可以走不同的服务器。
  • 负载均衡

    • 负载均衡:多在高并发情况下需要使用。其原理就是将数据流量分摊到多个服务器执行,减轻每台服务器的压力,多台服务器(集群)共同完成工作任务,从而提高了数据的吞吐量。
      Nginx可使用的负载均衡策略有:轮询(默认)、权重、ip_hash、url_hash(第三方)、fair(第三方)
    轮询默认方式
    weight权重方式
    ip_hash依据ip分配方式
    least_conn最少连接方式
    fair(第三方) 响应时间方式
    url_hash(第三方) 依据URL分配方式
1、轮询
  • 最基本的配置方法,它是upstream模块默认的负载均衡默认策略。每个请求会按时间顺序逐一分配到不同的后端服务器。
    注意:
  • 在轮询中,如果服务器down掉了,会自动剔除该服务器。
  • 缺省配置就是轮询策略。
  • 此策略适合服务器配置相当,无状态且短平快的服务使用。
2、weight权重方式
  • 在轮询策略的基础上指定轮询的几率。例子如下:

      #动态服务器组
      upstream dynamic_zuoyu {
        server localhost:8080  weight=2; #tomcat 7.0
        server localhost:8081; #tomcat 8.0
        server localhost:8082  backup; #tomcat 8.5
        server localhost:8083  max_fails=3 fail_timeout=20s; #tomcat 9.0
      }
    
  • 在该例子中,weight参数用于指定轮询几率,weight的默认值为1,;weight的数值与访问比率成正比,比如Tomcat 7.0被访问的几率为其他服务器的两倍。

注意:

  • 权重越高分配到需要处理的请求越多。
  • 此策略可以与least_conn和ip_hash结合使用。
  • 此策略比较适合服务器的硬件配置差别比较大的情况
3、ip_hash
  • 指定负载均衡器按照基于客户端IP的分配方式,这个方法确保了相同的客户端的请求一直发送到相同的服务器,以保证session会话。这样每个访客都固定访问一个后端服务器,可以解决session不能跨服务器的问题。

      #动态服务器组
        upstream dynamic_zuoyu {
          ip_hash;  #保证每个访客固定访问一个后端服务器
          server localhost:8080  weight=2; #tomcat 7.0
          server localhost:8081; #tomcat 8.0
          server localhost:8082; #tomcat 8.5
          server localhost:8083  max_fails=3 fail_timeout=20s; #tomcat 9.0
        }
    

注意:

  • 在nginx版本1.3.1之前,不能在ip_hash中使用权重(weight)。

  • ip_hash不能与backup同时使用。

  • 此策略适合有状态服务,比如session。

  • 当有服务器需要剔除,必须手动down掉。

  • 动静分离,做静态资源服务器

    • Nginx提供的动静分离是指把动态请求和静态请求分离开,合适的服务器处理相应的请求,使整个服务器系统的性能、效率更高。
      Nginx可以根据配置对不同的请求做不同转发,这是动态分离的基础。静态请求对应的静态资源可以直接放在Nginx上做缓冲,更好的做法是放在相应的缓冲服务器上。动态请求由相应的后端服务器处理。

Nginx常用命令

  • nginx -s stop :快速关闭Nginx,可能不会保存相关信息,并迅速终止web服务。
  • nginx -s quit :平稳关闭Nginx,保存相关信息,有条理的结束web服务。
  • nginx -s reload :改变了Nginx相关配置后,需要重新加载配置而重载。
  • nginx -s reopen :重新打开日志文件。
  • nginx -c filename :为 Nginx 指定一个配置文件,来代替缺省的。
  • nginx -v:显示 nginx 的版本。
nginx.conf 配置文件如下:
  • 注:conf / nginx.conf 是 nginx的默认配置文件。也可以使用 nginx -c 指定配置文件
    #运行用户
    #user  nobody;
    
    #启动的进程数
    worker_processes  2;
    
    #全局错误日志
    error_log  D:/Tools/nginx-1.10.1/logs/error.log;
    error_log  D:/Tools/nginx-1.10.1/logs/notice.log  notice;
    error_log  D:/Tools/nginx-1.10.1/logs/info.log  info;
    
    #PID文件,记录当前启动的nginx的进程ID
    pid        D:/nginx-1.8.0/logs/nginx.pid;
    
    #工作模式及连接数上限
    events {
       worker_connections 1024;    #单个后台worker process进程的最大并发链接数
    }
    
    #设定http服务器,利用它的反向代理功能提供负载均衡支持
    http {
       #设定mime类型(邮件支持类型),类型由mime.types文件定义
       include       D:/nginx-1.8.0/conf/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    D:/Tools/nginx-1.10.1/logs/access.log main;
       rewrite_log     on;
       
       #sendfile 指令指定 nginx 是否调用 sendfile 函数(zero copy 方式)来输出文件,对于普通应用,
       #必须设为 on,如果用来进行下载等应用磁盘IO重负载应用,可设置为 off,以平衡磁盘与网络I/O处理速度,降低系统的uptime.
       sendfile        on;
       #tcp_nopush     on;
    
       #连接超时时间
       keepalive_timeout  100;
       tcp_nodelay        on;
       
       #gzip压缩开关
       #gzip  on;
    
       #服务器集群配置 
        upstream  xxoo.com {  #服务器集群名字   
            # weight是权重的意思,权重越大,分配的概率越大。  
            server    127.0.0.1:8888  weight=1;  
            server    127.0.0.1:8288  weight=2;  
        } 
    
       #HTTP服务器
       server {
           #监听80端口,80端口用于HTTP协议
           listen       80;
           
           #定义使用www.xx.com访问
           server_name  localhost;
           
           #首页
           index index.html
           
           #编码格式
           charset utf-8;
           
           #代理配置参数
           proxy_connect_timeout 180;
           proxy_send_timeout 180;
           proxy_read_timeout 180;
           proxy_set_header Host $host;
           proxy_set_header X-Forwarder-For $remote_addr;
    
           #反向代理的路径(和upstream绑定),location 后面设置映射的路径
           location / {
            proxy_pass http://xxoo.com;  
            proxy_redirect default;  
            }
    
           #静态文件,nginx自己处理
           location ~ ^/(images|javascript|js|css|flash|media|static)/ {
               root D:_WorkspaceProjectgithubzpSpringNotesspring-securityspring-shirosrcmainwebappiews;
               #过期30天,静态文件不怎么更新,过期可以设大一点,如果频繁更新,则可以设置得小一点。
               expires 30d;
           }
       
           #设定查看Nginx状态的地址
           location /NginxStatus {
               stub_status           on;
               access_log            on;
               auth_basic            "NginxStatus";
               auth_basic_user_file  conf/htpasswd;
           }
       
           #禁止访问 .htxxx 文件
           location ~ /.ht {
               deny all;
           }
           
           #错误处理页面(可选择性配置)
           #error_page   404              /404.html;
           #error_page   500 502 503 504  /50x.html;
           #location = /50x.html {
           #    root   html;
           #}
       }
    }



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值