01 Nginx学习笔记 - xiaoxin01/Blog GitHub Wiki

  • 正向代理:client通过代理服务器访问外部service
  • 反向代理:外部client访问反向代理服务器,服务器自动转发给目标服务器获取数据并返回

默认安装位置:

    /usr/local/nginx
    #/etc/nginx

配置文件

三部分组成:

  • 全局块:整体运行配置
  • events块:控制nginx服务器与用户的网路连接
  • http块:
    • http全局块:
    • server块:

location

以下从上到下,第一个优先级最高。

=      |   location = /uri
^~     |   location ^~ /uri
~      |   location ~ pattern
~*     |   location ~* pattern
/uri   |   location /uri
@      |   location @err
  1. = ,精确匹配,表示严格相等
  2. ^~ ,匹配以URI开头
  3. ~ ,对大小写敏感, 使用正则 注意:某些操作系统对大小写敏感是不生效的,比如windows操作系统
  4. * ,与相反,忽略大小写敏感, 使用正则
  5. /uri ,匹配以/uri开头的地址
  6. @ 用于定义一个 Location 块,且该块不能被外部 Client 所访问,只能被nginx内部配置指令所访问,比如 try_files or error_page

参考:nginx - location配置详解

负载均衡

策略:

  1. 轮询,可以自动剔除down掉的服务器
  2. 权重weight,默认为1,越高分配比例越大
  3. ip哈希ip_hash,按照client ip计算哈希值来分配服务器
  4. fair(第三方),按照后端服务器响应时间来分配
upstream myServer {
    # ip_hash
    # fair
    server 192.168.0.101:8080 weight=1
    server 192.168.0.102:8080 weight=10
}

server {
    location / {
        proxy_pass http://myServer
    }
}

动静分离

location /img/ {
    root /data/img/
    autoindex on; # 可以列出文件夹内容
}
location /js/ {
    root /data/js/
}

nginx高可用集群

利用keepalived实现nginx集群的高可用,keepalived利用vip

Nginx原理

一个master,多个worker的架构,workder参与争抢处理请求:

  1. 利于 nginx -s reload
  2. worker为独立的进程,减少锁的开销
  3. 多个worker可以高可用
  • worker数量 = cpu逻辑核心数
  • 最大并发连接数 = worker_processes * worker_connections /[2|4]
⚠️ **GitHub.com Fallback** ⚠️