Nginx简要

Scroll Down

服务

基本服务

  1. 处理静态文件、索引文件
  2. 提供反向代理服务器
  3. 支持HTTP安全协议SSL
  4. 支持HTTP/2

高级HTTP服务

  1. 支持HTTP/1.0中KEEP-ALIVE
  2. 自定义访问日志格式
  3. 提供3xx - 5xx 错误代码重定向

邮件服务(SMTP)

进程

  1. master进程(管理vowker进程)
  2. worker进程(接受用户指令)

常用功能模块

  1. 静态资源部署
  2. 反向代理
  3. Web缓存
  4. 负载均衡(轮询、加权轮询、ip_hash)
  5. 用户认证

常用命令行

  1. nginx -t 验证配置环境是否准确
  2. nginx -s reload 重启服务
  3. nginx -s stop 停止
  4. nginx -c ./nginx.conf 指定配置文件运行

nginx.conf配置

全局块

  1. include 引用其他文件为配置文件
  2. error_log 配置日志存放路径以及日志级别

events块

  1. 主要用于配置用户网络连接
  2. accept_mutes: 配置网络连接序列化。作用: 当用户网络连接时,该配置将对多个nginx进程接受连接进行序列号,一个个来唤醒接收,防止多个进程对连接争抢
  3. worker connections: 配置worker进程最大连接数

http块

  1. 可以配置多个server块、每个server块可以配置多个location块
  2. alias 与 root 区别:
    root 处理结果: root 路径 + location路径
    alias 处理结果:alias路径替换location路径
    alias是一个目录别名的定义,root则是最上层目录含义
    当location路径以/结尾,alias必须也是以/结尾,root没有要求
  3. sendfile:用来开启高效的文件传输格式
    主要当数据处理时,系统将会少两步复制操作、以及不经过用户进程处理(文件缓存处理可直接到socket处理)。
  4. Gzip和sendfile共存问题:
    使用Gzip需要通过用户进程对资源压缩,而sendfile不需要经过用户进程处理
    解决:
    使用ngx_http_gzip_static_module模块的gzip_static指令
  5. referer: 可设置防盗链图片
    原理:
    当浏览器发送请求的时候,一般都会带上Referer来告诉服务器请求时从哪个页面链接过来的。此时可以判断是否为信任网站。
  6. proxy_pass: 反向代理

hosts系统文件

  1. 常用网址域名与ip地址关联(在本机制作一些虚拟域名使用)
  2. 浏览器输入网址,系统先自动从hosts文件寻找,有则打开,没有系统将网址提交到DNS域名解析(配置:127.0.0.1 www.kkk.com)

web缓存(ngx_http_proxy_mudule模块)

作用

  1. 减少网络带宽消耗
  2. 降低服务器压力
  3. 减少网络延迟,加快页面打开速度

proxy_cache_path:

设置缓存文件存放路径

  1. levels :指定缓存空间对应目录
  2. keys_zone: 设置缓存名称以及大小

proxy_cache 开启或关闭代理缓存

跨域

协议、域名(ip)、端口号不同
解决:

Access-Control-allow-Origin + 域名(Ip)
Access-Control-allow-Methods + 请求方式(GET\POST)

TLS传输层安全(--with-http-ssl-module模块)

http协议是明文传输数据,存在安全问题,而https是加密传输,相当于http+ ssl,并且可以防止流量劫持

Buffer(缓冲)与Cache(缓存)

  1. 相同点:
    都是用来提供IO吞吐效率,用来提升Nginx代理性能
  2. 不同点:
    缓冲主要用来解决不同设备之间数据传递速度不一致导致性能低,缓冲中的数据一旦此次操作完成,就可以删除
    缓存主要是备份,将服务器数据缓存一份到代理服务器,客户端再次请求时,直接从代理服务器获取,效率较高。缓存数据可以重复使用,满足特定条件可删除。

负载均衡

upstream模块

  1. 轮询:默认策略,每个请求会按时间顺序逐个分配到不同的后端服务器
  2. 加权轮询: weight=number,设置服务器权重,权重系数越大,被分配请求几率就越大
  3. ip_hash、url_hash、least_conn、fair

四层负载均衡

stream模块、--with-stream