服务
基本服务
- 处理静态文件、索引文件
- 提供反向代理服务器
- 支持HTTP安全协议SSL
- 支持HTTP/2
高级HTTP服务
- 支持HTTP/1.0中KEEP-ALIVE
- 自定义访问日志格式
- 提供3xx - 5xx 错误代码重定向
邮件服务(SMTP)
进程
- master进程(管理vowker进程)
- worker进程(接受用户指令)
常用功能模块
- 静态资源部署
- 反向代理
- Web缓存
- 负载均衡(轮询、加权轮询、ip_hash)
- 用户认证
常用命令行
- nginx -t 验证配置环境是否准确
- nginx -s reload 重启服务
- nginx -s stop 停止
- nginx -c ./nginx.conf 指定配置文件运行
nginx.conf配置
全局块
- include 引用其他文件为配置文件
- error_log 配置日志存放路径以及日志级别
events块
- 主要用于配置用户网络连接
- accept_mutes: 配置网络连接序列化。作用: 当用户网络连接时,该配置将对多个nginx进程接受连接进行序列号,一个个来唤醒接收,防止多个进程对连接争抢
- worker connections: 配置worker进程最大连接数
http块
- 可以配置多个server块、每个server块可以配置多个location块
- alias 与 root 区别:
root 处理结果: root 路径 + location路径
alias 处理结果:alias路径替换location路径
alias是一个目录别名的定义,root则是最上层目录含义
当location路径以/结尾,alias必须也是以/结尾,root没有要求 - sendfile:用来开启高效的文件传输格式
主要当数据处理时,系统将会少两步复制操作、以及不经过用户进程处理(文件缓存处理可直接到socket处理)。 - Gzip和sendfile共存问题:
使用Gzip需要通过用户进程对资源压缩,而sendfile不需要经过用户进程处理
解决:
使用ngx_http_gzip_static_module模块的gzip_static指令 - referer: 可设置防盗链图片
原理:
当浏览器发送请求的时候,一般都会带上Referer来告诉服务器请求时从哪个页面链接过来的。此时可以判断是否为信任网站。 - proxy_pass: 反向代理
hosts系统文件
- 常用网址域名与ip地址关联(在本机制作一些虚拟域名使用)
- 浏览器输入网址,系统先自动从hosts文件寻找,有则打开,没有系统将网址提交到DNS域名解析(配置:127.0.0.1 www.kkk.com)
web缓存(ngx_http_proxy_mudule模块)
作用
- 减少网络带宽消耗
- 降低服务器压力
- 减少网络延迟,加快页面打开速度
proxy_cache_path:
设置缓存文件存放路径
- levels :指定缓存空间对应目录
- 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(缓存)
- 相同点:
都是用来提供IO吞吐效率,用来提升Nginx代理性能 - 不同点:
缓冲主要用来解决不同设备之间数据传递速度不一致导致性能低,缓冲中的数据一旦此次操作完成,就可以删除
缓存主要是备份,将服务器数据缓存一份到代理服务器,客户端再次请求时,直接从代理服务器获取,效率较高。缓存数据可以重复使用,满足特定条件可删除。
负载均衡
upstream模块
- 轮询:默认策略,每个请求会按时间顺序逐个分配到不同的后端服务器
- 加权轮询: weight=number,设置服务器权重,权重系数越大,被分配请求几率就越大
- ip_hash、url_hash、least_conn、fair
四层负载均衡
stream模块、--with-stream