概念
-
Nginx
是一个轻量级、高性能的反向代理Web
服务器,可以实现反向代理、负载平衡。
特点
- 跨平台、配置简单、方向代理、高并发连接、处理静态文件好、耗费内存少。
-
Nginx
内置健康检查功能、如果一个服务器挂了、再发送的请求会提交到其它节点上。
Nginx 处理请求
#nginx进程数
worker_processes 1;
events {
# 单个进程最大连接数
worker_connections 1024;
}
http{
server{
# 监听80端口
listen 80;
# 域名可以有多个 中间用空格隔开
server_name:127.0.0.1 localhost
# 拒绝的Ip
deny 127.0.0.2
# 允许的ip
allow 127.0.0.1
}
# 配置静态资源路径
location /test{
add_header Cache-Control no-store;
alias D:/test/index;
inde index.html;
}
# 当拦截到80 端口以moduletest开头的请求,去访问 http://127.0.0.1:8001/moduletest/
location /moduletest{
# 请求转向下面的地址
proxy_pass http://127.0.0.1:8001/moduletest/
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
client_max_body_size 10m;
proxy_set_header Request-Url $request_uri;
}
}
正向代理、反向代理
- 正向代理:发送请求直接请求到目标服务器上面。
- 反向代理:发送的请求经过
Nginx
根据配置的规则去转发到相应的服务器上。
Nginx 优点
- 内存占用少、可实现高并发连接、处理响应快。
- 可实现http服务器、虚拟主机、方向代理、负载均衡。
- Nginx配置简单。
- 可以不暴露正式的服务器IP地址
Nginx缺点
- 动态处理差:nginx处理静态文件好,耗费内存少,但是处理动态页面则很鸡肋,现在一般前端用nginx作为反向代理抗住压力。
Nginx 配置文件 Location作用
匹配符号 |
匹配规则 |
优先级 |
= |
精确匹配 |
1 |
^~ |
以某个字符串开头 |
2 |
~ |
区分大小写的正则匹配 |
3 |
~* |
不区分大小写的正则匹配 |
4 |
!~ |
区分大小写不匹配的正则 |
5 |
!~* |
不区分大小写不匹配的正则 |
6 |
/ |
通用匹配,任何请求都会匹配到 |
7 |
# 匹配根目录 返回400
location =/ {
return 400;
}
Nginx 限流
- 限制用户请求速度,防止服务器崩掉。
- 正常限制访问频率:限制用户发送的请求
# 定义限流速度,一个用户一分钟一个请求进来,多余的全部漏掉
limit_req_zone $binary_remote_addr zone=one:10m rate=1r/m;
#绑定限流
server{
location /test.html
{
limit_req zone=zone; proxy_pass http://test;
}
}
#定义限流维度,一个用户一分钟一个请求进来,多余的全部漏掉
limit_req_zone $binary_remote_addr zone=one:10m rate=1r/m;
#绑定限流维度
server{
location /test.html {
# Nginx对于一个用户的请求会立即处理前五个,多余的就慢慢来落,没有其他用户的请求我就处理 你的,有其他的请求的话我Nginx就漏掉不接受你的请求
limit_req zone=zone burst=5 nodelay; proxy_pass http://test;
}
}
http {
limit_conn_zone $binary_remote_addr zone=myip:10m;
limit_conn_zone $server_name zone=myServerName:10m;
}
server
{
location / {
# 单个IP 同时并发连接数最多只能10个连接
limit_conn myip 10;
# 最大并发数只能100个连接;
limit_conn myServerName 100;
rewrite / http://www.lijie.net permanent;
}
}