nginx配置 笔记

前文

nginx 作为web服务器被广泛的使用,凭借 跨平台、配置简单、支持高并发, 内存消耗小、成本低廉等特点被大量企业公司使用


nginx 特点

跨平台、配置简单,事件驱动 异步非阻塞、高并发连接、内存消耗小、成本低廉。

1、正向代理

服务端不清楚 哪个客户端请求 nginx作为代理方,把不同url请求 连接到同一服务端

2、反向代理

客户端 不清楚请求发送到哪个服务端,nginx同样作为代理方,转发请求,保障应用服务器的安全(增加一层代理,可以屏蔽危险攻击,更方便的控制权限)

server {

        listen      8080;       

        server_name  localhost;

        location / {

            root  html; # Nginx默认值

            index  index.html index.htm;

        }

        # 加一层 请求转发

        proxy_pass http://localhost:8000; # 反向代理配置,请求会被转发到8000端口

}

http 模块下,每一个server 作为一个服务端; listen 监听端口,server_name  对应请求host字段


3、资源分离

静态资源 nginx 根据请求前缀跳转不同文件目录下的静态文件

动态资源 请求转发到tomcat 应用服务器

好处:给应用服务器减轻压力,将后台api接口服务化,还能将前后端代码分开并行开发和部署


4、负载均衡

分摊服务器集群压力;保证客户端访问的稳定性;负载均衡可以解决分摊服务器集群压力的问题。除此之外,Nginx还带有健康检查(服务器心跳检查)功能,会定期轮询向集群里的所有服务器发送健康检查请求,来检查集群中是否有服务器处于异常状态。

# 负载均衡:设置domain

upstream domain {

    server localhost:8000;

    server localhost:8001;

}


5、配置限流

正常限流(漏桶算法)

limit_req_zone $binary_remote_addr zone=mylimit:10m rate=10r/s;

server {

    location /login/ {

        limit_req zone=mylimit;

        proxy_pass http://my_upstream;

    }

}

Key - 定义应用限制的请求特性。示例中的Nginx变量remote_addr,占用更少的空间)

Zone - 定义用于存储每个IP地址状态以及被限制请求URL访问频率的共享内存区域。保存在内存共享区域的信息,意味着可以在Nginx的worker进程之间共享。定义分为两个部分:通过zone=keyword标识区域的名字,以及冒号后面跟区域大小。16000个IP地址的状态信息,大约需要1MB,所以示例中区域可以存储160000个IP地址。

Rate - 定义最大请求速率。在示例中,速率不能超过每秒10个请求。Nginx实际上以毫秒的粒度来跟踪请求,所以速率限制相当于每100毫秒1个请求。因为不允许”突发情况”(见下一章节),这意味着在前一个请求100毫秒内到达的请求将被拒绝。




扩展 nginx 怎么支持高并发

多进程单线程: 多少个cpu配置多少个worker进程,减少上下文切换

事件驱动模型:异步非阻塞执行请求,不阻塞等待请求返回,而是设置了事件回调,当请求处理完成后,调用work进程返回

你可能感兴趣的:(nginx配置 笔记)