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官网,右下角点击downloadMainline 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离线部署

浙公网安备 33010602011771号