一、Nginx 入门知识点

  • nginx 配置文件格式
  • nginx 反向代理配置
  • nginx SSL 配置
  • nginx 跨域配置
  • nginx 负载均衡
  • nginx 限流配置
  • nginx 图片缓存
  • nginx 动静分离
  • nginx 黑名单
  • nginx 验证
  • nginx 会话保持
    • sticky
  • nginx配置location匹配顺序
  • nginx + lua 网关
  • IO 模型

二、Nginx 配置文件格式

2.1、nginx.conf 基础配置

  1. worker_processes 1;
  2. events {
  3. worker_connections 1024;
  4. }
  5. http {
  6. include mime.types;
  7. default_type application/octet-stream;
  8. sendfile on;
  9. keepalive_timeout 65;
  10. server {
  11. listen 80;
  12. server_name localhost;
  13. location / {
  14. root html;
  15. index index.html index.htm;
  16. }
  17. error_page 500 502 503 504 /50x.html;
  18. location = /50x.html {
  19. root html;
  20. }
  21. }
  22. }

2.2、配置文件整体架构

Nginx 知识点 - 图1
nginx配置文件主要分为四个部分:

  • main(全局设置)
  • http ( )
  • upstream(负载均衡服务器设置)
  • server(主机设置)
  • location(URL匹配特点位置的设置)

各个部分相关关系

  • server继承main,location继承server,upstream即不会继承其他设置也不会被继承。

2.3、各部分介绍

2.3.1、main

Nginx 知识点 - 图2

三、进阶配置

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; } }

  1. - 突发限制访问频率(突发流量)
  2. ```nginx
  3. #定义限流维度,一个用户一分钟一个请求进来,多余的全部漏掉
  4. limit_req_zone $binary_remote_addr zone=one:10m rate=1r/m;
  5. #绑定限流维度
  6. #burst=5 这个配置的意思是设置一个大小为5的缓冲区当有大量请求(爆发)过来时,
  7. # 超过了访问频次限制的请求可以先放到这个缓冲区内。
  8. # nodelay nodelay,如果设置,超过访问频次而且缓冲区也满了的时候就会直接返回503,
  9. # 如果没有设置,则所有请求会等待排队。
  10. server{
  11. location / {
  12. limit_req zone=one burst=5 nodelay;
  13. proxy_pass http://test_service;
  14. }
  15. }