Nginx功能了解

Nginx功能了解

其主要作用是HTTP高性能与代理。其次是可以做限流、可以做负载,以及超时设置。

常识定义:
反向代理:客户端 -> Nginx -> 服务
正向代理:服务 -> Nginx -> 客户端

限流:

  使用漏桶/令牌桶实现。

具体是漏桶还是命令桶分不清。感觉是结合体。网上各种说法都有,但大多认为是 漏桶。

配置解析:limit_req_zone、limit_req
  定义了一个名为mylimit的区域,使用了10MB的共享内存来跟踪连接的状态,并且对每个IP地址限制请求率为每秒5个请求。burst=5 设置了漏桶的容量,允许在超出限制的情况下进行额外的5个请求,以应对突发流量。

http {
	// 主要是定义
	// limit_req_zone 定义漏桶限流区域
	// $binary_remote_addr 表示客户端 IP 地址
	// zone=mylimit:10m 定义名为ylimit的共享内存区域,大小为10MB。
	// rate=5r/s 表示每秒限制5个请求
	limit_req_zone $binary_remote_addr zone=mylimit:10m rate=5r/s;

	server {
		listen 80;
        server_name myserver.com;
 
        location / {
        	// 主要是 应用层面策略
        	// burst=10 爆发情况下会存储 10等待处理
        	// nodelay 超过 10 直接抛弃
            limit_req zone=mylimit burst=10 nodelay;
            proxy_pass http://my_upstream;
        }
	}
}

负载均衡:

轮询:

  默认一个一个来,或者按照权重进行查询。

http {
	// weight 整数,数字越小权重越大。权重越大,越容易被请求。
	// 1 最大,7最小
	upstream targetServer {
		server www.baidu1.com weight 1;
		server www.baidu2.com weight 3;
		server www.baidu3.com weight 4;
		server www.baidu3.com weight 7;
	}
	server {
		listen 80;
		server_name myserver.com;

		location /api/* {
			proxy_pass http://targetServer
		}
	}
}

ip_hash:

  取ip的hash值,确定请求的服务。结果:一个ip始终请求某一个服务。+

upstream targetServer {
	ip_hash;// 此处直接使用
	server www.baidu1.com weight 1;
	server www.baidu2.com weight 3;
	server www.baidu3.com weight 4;
	server www.baidu3.com weight 7;
}

least_conn:

  优先请求连接数量少的服务。

upstream targetServer {
	least_conn;// 此处直接使用
	server www.baidu1.com weight 1;
	server www.baidu2.com weight 3;
	server www.baidu3.com weight 4;
	server www.baidu3.com weight 7;
}

fair:

  优先请求响应时间快的服务。

upstream targetServer {
	fair;// 此处直接使用
	server www.baidu1.com weight 1;
	server www.baidu2.com weight 3;
	server www.baidu3.com weight 4;
	server www.baidu3.com weight 7;
}

超时:

  考虑服务宕机的情况,需要设置超时时间。
  Nginx超时有四种,客户端超时、代理超时、压缩超时等,只记代理超时就行。

http {
    server {
        listen 80;
        server_name your.domain.com;
 
        location / {
            proxy_pass http://your_upstream;
            proxy_connect_timeout 30s;
            proxy_send_timeout 60s;
            proxy_read_timeout 90s;
        }
    }
}
posted @ 2024-11-29 22:13  之士咖啡  阅读(28)  评论(0)    收藏  举报