一、Nginx 入门知识点
- nginx 配置文件格式
- nginx 反向代理配置
- nginx SSL 配置
- nginx 跨域配置
- nginx 负载均衡
- nginx 限流配置
- nginx 图片缓存
- nginx 动静分离
- nginx 黑名单
- nginx 验证
- nginx 会话保持
- sticky
- nginx配置location匹配顺序
- nginx + lua 网关
- IO 模型
二、Nginx 配置文件格式
2.1、nginx.conf 基础配置
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name localhost;
location / {
root html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
2.2、配置文件整体架构
nginx配置文件主要分为四个部分:
- main(全局设置)
- http ( )
- upstream(负载均衡服务器设置)
- server(主机设置)
- location(URL匹配特点位置的设置)
各个部分相关关系
- server继承main,location继承server,upstream即不会继承其他设置也不会被继承。
2.3、各部分介绍
2.3.1、main
http://nginx.org/en/docs/ngx_core_module.html
2.3.2、http
http://nginx.org/en/docs/http/ngx_http_core_module.html#http
2.3.3、server
http://nginx.org/en/docs/http/ngx_http_core_module.html#server
2.3.4、location
http://nginx.org/en/docs/http/ngx_http_core_module.html#location
- 语法规则
三、进阶配置
3.1、限流配置
Nginx中使用ngx_http_limit_req_module模块来限制的访问频率,限制的原理实质是基于漏桶算法原理来实现的。
- 限流算法
- 令牌算法
- 漏桶算法
- 滑动窗口算法
- 正常限制访问频率(正常流量)
```nginx
定义限流维度,一个用户一分钟一个请求进来,多余的全部漏掉
limit_req_zone $binary_remote_addr zone=one:10m rate=1r/m;
绑定限流维度
server{ location / { limit_req zone=one; proxy_pass http://test_service; } }
- 突发限制访问频率(突发流量)
```nginx
#定义限流维度,一个用户一分钟一个请求进来,多余的全部漏掉
limit_req_zone $binary_remote_addr zone=one:10m rate=1r/m;
#绑定限流维度
#burst=5 这个配置的意思是设置一个大小为5的缓冲区当有大量请求(爆发)过来时,
# 超过了访问频次限制的请求可以先放到这个缓冲区内。
# nodelay nodelay,如果设置,超过访问频次而且缓冲区也满了的时候就会直接返回503,
# 如果没有设置,则所有请求会等待排队。
server{
location / {
limit_req zone=one burst=5 nodelay;
proxy_pass http://test_service;
}
}
限制并发连接数
http {
limit_conn_zone $binary_remote_addr zone=myip:10m;
limit_conn_zone $server_name zone=myServerName:10m;
}
server {
location / {
limit_conn myip 10; #每个ip 最大连接数10
limit_conn myServerName 100; #整个虚拟服务器同时最大并发数最多只能100个链接
rewrite / http://www.lijie.net permanent;
}
}
参考
- https://www.cnblogs.com/taojietaoge/p/15271585.html
- http://nginx.org/en/docs/