Nginx企业进阶实战应用笔记

Nginx基本介绍

web应用服务器:实现网站或应用的功能性展示与处理的服务

当前企业中常见的web应用服务

Apache:http://apache.org
Nginx:http://nginx.org
IIS:http://www.iis.net
Tomcat:http://tomcat.apache.org
Weblogic:http://oracle.com/java/weblogic

Nginx出现的意义

web应用市场占比分析:https://w3techs.com/technologies/cross/web_server/ranking

 分析结果:

1.越高精尖企业对Apache依赖越少,Nginx使用占比率越高
2.Nginx具备比Apache更强大的诸多优势

越来越多企业选择Nginx原因:

1.高性能  web应用处理高并发请求能力强(网络IO模型,Nginx epoll模型,Apache select模型)  可参考:五种IO网络模型
2.高扩展性  Nginx程序是模块化的逻辑结构,官方提供了多元化的不同模块,从而让Nginx能够实现多种适用于不同场景需求的功能
3.高可靠性  从而保证企业中三个九,四个九,五个九的需求 (衡量所维护业务稳定性的指标 99.9%,99.99%,99.999%,指一年中服务器业务稳定运行的时间)
4.可以实现集成API功能及安全加固:openresty,tengine

Nginx主要应用场景

Nginx应用场景分为三方面:web应用服务、代理功能、第三方集成

web应用方面

1.web服务:实现用户访问业务请求处理
2.处理静态资源:处理静态资源效率高
  静态资源:js、html、jpg、MP4
  动态资源:LNMP、LNMT、LNMU

代理服务:

1.负载均衡:实现web应用集群化的功能
2.代理缓存:会将热点请求资源在本地缓存下来

安全服务

1.https:结合ssl协议实现加密传输数据安全
2.web防火墙(waf):防SQL注入、cc攻击、上传下载

Nginx安装方式

安装方式:

1.编译器安装
2.通过自动化安装工具实现自动化安装
3.容器化

源码编译安装

特点:

1.私人定制 需要什么功能添加什么模块
2.繁琐 需要准备的依赖环境居多
3.后期扩展方便

Nginx的版本选择

进入nginx官网,右下角点击download
Mainline version:主干版本 类似小白鼠
Stable version :稳定版本

nginx源码分析:

[root@wl nginx]# ll
总用量 840
drwxr-xr-x   3 root   root    4096 4月   1 2022 ,.
drwxr-xr-x.  6 abcd   mysql   4096 1月  13 2022 auto   //编译环境
drwxr-x---   3 root   root    4096 3月  31 2022 c:
-rw-r--r--.  1 abcd   mysql 288742 12月  4 2018 CHANGES  //存放版本特性
-rw-r--r--.  1 abcd   mysql 440121 12月  4 2018 CHANGES.ru
drwx------.  2 nobody root    4096 12月 12 17:29 client_body_temp
drwxr-xr-x.  2 abcd   mysql   4096 12月 13 17:03 conf  //示例配置文件
-rwxr-xr-x.  1 abcd   mysql   2502 12月  4 2018 configure //二进制编译脚本
drwxr-xr-x.  4 abcd   mysql   4096 1月  13 2022 contrib //各种编辑工具的Nginx语法文件
drwxr-x---   3 root   root    4096 4月  27 2022 D:
drwx------.  2 nobody root    4096 1月  13 2022 fastcgi_temp
drwxr-xr-x   3 root   root    4096 12月 13 14:51 html  //示例html文件
-rw-r--r--.  1 abcd   mysql   1397 12月  4 2018 LICENSE
drwxr-xr-x.  2 root   root    4096 12月 13 15:06 logs
-rw-r--r--.  1 root   root     376 11月 15 17:40 Makefile
drwxr-xr-x.  2 abcd   mysql   4096 1月  13 2022 man
drwxr-xr-x.  3 root   root    4096 11月 15 17:41 objs
drwx------. 12 nobody root    4096 1月  13 2022 proxy_temp
-rw-r--r--.  1 abcd   mysql     49 12月  4 2018 README
drwxr-xr-x.  5 root   root    4096 11月 15 17:42 sbin
drwx------.  2 nobody root    4096 1月  13 2022 scgi_temp
drwxr-xr-x.  9 abcd   mysql   4096 1月  13 2022 src  //nginx程序的源码
drwxr-x---   3 root   root    4096 8月  26 15:53 static
drwx------.  2 nobody root    4096 1月  13 2022 uwsgi_temp   

auto文件夹下的cc文件夹:提供编译工具 根据编译工具进行编译
auto文件夹下的os文件夹:根据当前的系统类型相结合进行编译安装,包含跨平台实现的相关代码
nginx下的CHANGES:更新版本内容通知
nginx下的conf文件夹:基础配置文件的例子
nginx下的configure文件:执行编译安装的脚本
nginx下的/contrib/vim文件:针对各种编辑器ngxin的语法判断
src文件夹:
core:文件夹用于存放nginx核心源代码,其中有nginx内部自定义的数据结构,例如字符串、数组、链表、散列表、队列、基数树、以及红黑树等。另外还有nginx核心结构体,例如用于与客户端连接的ngx_connection_t,用于配置解析的ngx_conf_t ,用于缓存的ngx_buf_t ,nginx入口函数main位于nginx.c文件中,该文件还有很多其他的内容。
event:文件中存储了事件处理模块相关的代码,modules存储了I/O多路复用相关的代码,例如 select、epoll、poll、kqueue等。nginx可以根据不同的系统选择不同的方案以实现性能的最大化。
http:文件夹包含nginx处理http请求时所需要的相关模块代码,nginx1.9.5版本实现支持了http2.0。
mail:作为邮件服务器的实现代码。
misc:主要是两个文件,一个是ngx_cpp_test_module.cpp和ngx_google_perftools_module.c其中ngx_cpp_test_module.c用于测试nginx中 引用的头文件是否与C++兼容,ngx_google_perftools_modules.cpp用于支持gperftools的实现。gperftools是否是谷歌开源的性能分析工具。
os:文件夹包含跨平台实现的相关代码。
stream:文件夹包含nginx支持tcp反向代理功能的具体实现。
参考地址:Nginx源码分析

编译安装

预编译安装 ./configure 参数
编译 make
安装 make install
安装步骤可以参考:Nginx离线部署

 

posted @ 2022-12-13 11:21  聆听说书人  阅读(71)  评论(0)    收藏  举报