Nginx核心技术笔记(一) 初识nginx

1.Nginx的优点

在这里插入图片描述

  1. 高并发,高性能(高吞吐量):对硬件及操作系统的深度挖掘。
  2. 可扩展性好:生态圈丰富,大量第三方模块。
  3. 高可靠性:持续不间断运行数年
  4. 热部署:不停止服务的情况下升级nginx
  5. BSD许可证:赋予最大灵活性,不止是开源免费,还可以通过自己需求修改源码。

2.主要应用场景

在这里插入图片描述

  1. 静态资源服务:

    通过本地文件系统提供服务。

    原因: 静态资源由nginx提供访问即可,加速用户访问。

  2. 反向代理服务:

    • Nginx的强大性能
    • 缓存
    • 负载均衡

    原因:

    • 应用服务,要求开发效率高,导致运行效率低。qps,tps或者并发都是受限的。所以需要把很多这样的应用服务组成一个集群,向用户提供高可用性,而一旦很多应用服务组成集群,我们需要nginx具有反向代理功能。可以把动态请求传导给用户。
    • 而很多应用服务构成集群又会带来两个需求:
      1. 动态扩容
      2. 有些服务出问题的时候需要做容灾

    ​ 因此反向代理需要负载均衡功能。

    • nginx处于内网边缘结点,随着链路增加导致用户访问时延增加,体验差,可以把一段时间不变的或者用户看起来不变的内容用nginx缓存这样时延会减少很多。因此反向代理衍生出另外一种功能:缓存。
  3. API服务:

    OpenResty

    由nginx直接访问数据库,利用其强大并发性能实现web防火墙的业务功能,这要求api有强大的业务处理功能,利用OpenResty或js等工具库提供完整api。

    https://www.cnblogs.com/phpgod/p/5574564.html


3. Nginx出现的原因

在这里插入图片描述

当cpu单核摩尔定律未失效时,通过改变硬件,程序性能提升明显,但当单核摩尔定律逐渐向多核发展时,通过改变硬件,程序的性能提升倒不是很明显。这是因为操作系统和大量软件没有做好应对多核架构的准备,比如apache服务器。

nginx可以处理上百万,上千万的并发连接。一般新增的服务器都是使用nginx。


4. Nginx的组成

在这里插入图片描述

  • Nginx二进制可执行文件
  • Nginx.conf配置文件
  • access.log访问日志
  • error.log错误日志

5.编译属于自己的Nginx

原因:根据自己需求添加模块

在这里插入图片描述

源码目录:

在这里插入图片描述

  • auto:主要是辅助conf文件对操作系统进行判断,以提供合适的服务。
  • CHANGES:版本变化说明
  • conf:示例文件,安装好nginx后,方便运维配置,把conf目录的示例文件拷贝到安装目录。
  • configure脚本:生成中间文件,执行编译前的必备动作。
  • contrib:提供脚本和vim语法文件,把vim文件拷贝到自己的vim文件夹后,vim会有语法显示。
  • html:提供50x.html和index.html。
  • man:帮助文件
  • src:源代码
    在这里插入图片描述

编译参数(还有其他的)

-with-系列指默认不会编译进去

-without系列指默认会编译进去

编译

  1. ./configure --prefix=+目录

如果无报错则编译成功,所有目录会被列出来,生成一些中间文件,中间文件在objs文件夹。

  1. 在nginx根目录执行make编译,如无错误则生成大量中间文件。生成运行时的二进制文件,在objs文件夹(做版本升级时,编译后从这里把二进制文件拷贝到安装文件中即可)
  2. make install(首次安装时使用),安装后在指定目录里面会生成一个nginx文件夹。

更新

  1. 更新nginx文件二进制文件时,先把旧文件cp为nginx.old文件再更新nginx文件。
  2. 然后使用kill -USR2 +进程号 ,生成新的worker,服务平滑过渡到新worker。
  3. kill -WINCH +进程号 优雅关闭旧服务的所有进程,但旧服务还在,方便版本回退。

安装后目录

在这里插入图片描述

  • sbin有运行的二进制文件
  • 配置文件在conf
  • 日志再logs目录

6. 主要语法规则

  1. 配置文件由指令与指令块(有些有名字有些没有)构成
  2. 每条指令以;分号结尾,指令与参数间以空格符号分割
  3. 指令块以{}大括号讲多条指令组织在一起
  4. include语句允许组合多个配置文件以提升可维护性
  5. 使用#符号添加注释,提高可读性
  6. 使用$符号使用变量
  7. 部分指令的参数支持正则表达式

在这里插入图片描述

在这里插入图片描述

http指令块

在这里插入图片描述

  • http:里面所有指令都是由http模块去进行解析执行的。
  • upstream:上游服务,需要与tomcat等企业内务服务交互时定义。
  • server:域名或一组域名
  • location:url表达式

7. Nginx命令行

  1. 格式:nginx -s reload
  2. 帮助: -? -h
  3. 使用指定的配置文件: -c
  4. 指定配置指令:-g
  5. 指定运行目录:-p
  6. 发送信号:-s
    • 立刻停止服务:stop
    • 优雅的停止服务:quit
    • 重载配置文件:reload
    • 重新开始记录日志文件:reopen
  7. 测试配置文件是否有语法错误: -t -T
  8. 打印nginx的版本信息,编译信息等: -v -V

8. 搭建静态资源

步骤:

  1. vim nginx.conf
    在这里插入图片描述
  • listen:监听8080端口,访问服务器8080端口时监听。
  • location / :任何url都跳转到本地资源。
  • alias: 本地web静态资源文件根目录。里面文件的访问与根目录一一对应。
  1. 重启即可

注意:

  1. 通常要打开gzip,压缩传输的静态资源文件。

在这里插入图片描述
2. autoindex开启后显示静态资源文件所有的目录,可以共享静态资源。

  1. set limit_rate 1k(每秒最多传输1k字节) ,限制发送响应的速度。

  2. 日志设置(格式设置参考文档)在这里插入图片描述
    在这里插入图片描述


9. 搭建反向代理

先把要代理的服务器配置成只有内网可以访问。

  1. vim conf

在这里插入图片描述 配置上游服务,可以配置多台服务器,然后用hash或其他算法选择一台服务器。

  1. 配置反向代理在这里插入图片描述
  • proxy_set_header:添加代理服务器的头信息(浏览器地址等),供上游服务器识别。
  • proxy_cache:缓存上游服务器的内容。

10. GoAccess实现可视化并实时监控

access日志记录nginx相关信息,但实时分析access log相对比较困难,GoAccess为一款以图形化方式通过websocket协议实时把log反应到浏览器的工具。

显示效果:

在这里插入图片描述

启动:

在这里插入图片描述

设置nginx重定向:

在这里插入图片描述


11. SSL协议

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

公钥加密只有私钥能解密,私钥加密只有公钥能解密。

相关内容

https原理:https://blog.csdn.net/weixin_43958969/article/details/90344581

CA公信机构

在这里插入图片描述

  • 证书订阅人通过向登记机构登记申请,登记机构通过CSR向CA申请。
  • 申请通过后CA颁发一对公钥和私钥。
  • 获取公钥和私钥后订阅人把证书部署到web服务器上。
  • 浏览器请求证书时,web服务器会把公钥发送给浏览器。
  • 浏览器通过CRL或者OCSP验证公钥是否有效。

证书类型

在这里插入图片描述

  • DV:只验证域名的归属是否正确,域名指向的服务器是正在申请的服务器就能成功申请证书,若使用其他证书则会验证申请邮箱。(很多都是免费,验证实时)
  • OV:验证企业或者机构是否正确。
  • EV:验证更加严格。

证书链

在这里插入图片描述

  • 组成结构:根证书,二级证书,主证书。

  • 根证书验证严格,浏览器除了验证是否过期最主要是验证根证书是否有效。


12 .TLS通讯过程

在这里插入图片描述

主要做的事:

  1. 交换密钥
  2. 加密数据

13 . SSL协议握手时Nginx的性能

性能主要看椭圆加密算法和对称加密算法的影响。

在这里插入图片描述

  • 对于小文件,握手是主要影响其qps性能的指标。

在这里插入图片描述

  • 对于大文件,考虑对称加密算法的性能,使用AES算法的性能比较好

在这里插入图片描述

  • 以小文件为主时主要考虑非对称加密性能。小文件比较多时主要优化椭圆曲线算法的强度。
  • 以大文件为主时主要考虑对称加密算法性能。大文件比较多时,主要考虑AES算法是否能被替换,或者调整强度。

14. HTTPS网站部署

步骤+

  1. 安装工具在这里插入图片描述

  2. 输入命令,自动修改配置文件,以及指定申请证书的域名。

    在这里插入图片描述

  3. 选择是否重定向(不安全流量重定向到https站点)在这里插入图片描述

对conf文件的改写

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_43958969/article/details/90346917