Nginx常见配置

负载均衡配置

配置语法

upstream backend  {
  server backend1.example.com weight=5;
  server backend2.example.com:8080;
  server unix:/tmp/backend3;
}
 
server {
  location / {
    proxy_pass  http://backend;
  }
}

配置实例

http {
  upstream myproject {
    server 127.0.0.1:8000 weight=3;
    server 127.0.0.1:8001 max_fails=100 fail_timeout=30000; # 允许请求失败的次数;经过max_fails失败后,服务暂停的时间;
    server 127.0.0.1:8002 backup; # 预留的备份服务器(当正在使用的后端服务异常时,启动预留服务)
    server 127.0.0.1:8003 down; # 当前server暂时不参与负载均衡
    server 127.0.0.1:8004 max_conns=100; # 限制最大的接受的连接数
    keepalive 600; # 配置到后端服务器的长连接(需要配合server中的 proxy_http_version 和 proxy_set_header 配置才能生效)
  }
  
  server {
    listen 80;
    server_name www.domain.com;
    location / {
      proxy_pass http://myproject;
      proxy_http_version 1.1; # 配置支持长连接
      proxy_set_header Connection ""; # 配置支持长连接
    }
  }
}

调度算法

算法 说明
加权轮询 weight值越大,访问到的几率越高
ip_hash 每个请求按访问IP的hash结果分配,来自同一个IP的请求会访问固定的服务器
least_conn 最少链接数,哪个机器的连接数少就分配到那个机器上
url_hash 按照访问的URL的hash分配请求,每个url定向到同一个服务器
hash关键数值 hash自定义的key

流控配置

todo

访问限制

todo

性能优化

TCP_NODELAY 和 TCP_NOPUSH的解释

# 工作进程等于核心数
worker_processes  2;
# CPU亲缘性绑定
worker_cpu_affinity 01 10;

# 配置Nginx worker进程最大打开文件数
worker_rlimit_nofile 65535;

events {
  #使用epoll模型
  use epoll;
  #单个进程允许的客户端最大连接数
  worker_connections  20480;
}

http {
  include       mime.types;
  default_type  application/octet-stream;
  sendfile        on;  # sendfile系统调用在两个文件描述符之间直接传递数据(完全在内核中操作),从而避免了数据在内核缓冲区和用户缓冲区之间的拷贝,操作效率很高,被称之为零拷贝。
  tcp_nopush     on;

  keepalive_timeout  120;

  gzip  off;
  access_log off;   #日志功能要关闭
  
  client_header_buffer_size 32k;
  large_client_header_buffers 4 32k;
}
posted @ 2019-09-17 09:27  飞_2016  阅读(110)  评论(0编辑  收藏  举报