一箫一剑平生意,负尽狂名十五年。这篇文章主要讲述Linux下玩转nginx系列——初识nginx及其使用入门相关的知识,希望能为你提供帮助。
一、初识nginxnginx是一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器和通用 TCP/UDP 代理服务器。由俄罗斯的程序设计师Igor Sysoev所开发,供俄国大型的入口网站及搜索引擎Rambler(俄文:Рамблер)使用。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好。
nginx因为它的稳定性、丰富的模块库、灵活的配置和低系统资源的消耗而闻名.业界一致认为它是Apache2.2+mod_proxy_balancer的轻量级代替者,不仅因为响应静态页面的速度非常快,而且它的模块数量是Apache的2/3。对proxy和rewrite模块的支持很彻底,还支持mod_fcgi、ssl、vhosts ,适合用做mongrel clusters前端HTTP响应。nginx和Apache一样用模块化设计,nginx模块包括内置模块和第三方模块,其中内置模块中包含主模块和事件模块。
二、nginx可提供的服务
- web 服务
- 负载均衡 (反向代理)
- web cache(web 缓存)
- 高并发,静态小文件
- 占用资源少。2万并发、10个线程,内存消耗几百M
- 功能种类比较多。Web,cache,proxy。每一个功能都不是特别强
- 支持epoll模型,使得nginx可以支持高并发
- nginx 配合动态服务和Apache有区别(FASTCGI 接口)
- 利用nginx可以对IP限速,可以限制连接数
- 配置简单,更灵活
- 静态服务器(图片,视频服务),如html,js,css,flv,jpg,gif等
- 动态服务,nginx—fastcgi 方式运行php,JSP。(PHP并发约500-1500,mysql 并发约300-1500)
- 反向代理,负载均衡。日pv2000W以下,均可直接用nginx做代理
- 缓存服务。类似 SQUID,VARNISH
因此作为程序员可以为nginx设计第三方模块,不过与httpd不同的是,nginx早期包括现在的版本虽然是模块化的,也就意味着说我们可以自行开发第三方模块对Nginx进行扩展,但是nginx不支持模块动态装卸载的,也就是说编译的时候只能静态直接编译进nginx而且随nginx的启动而启动,即模块编译好之后可以直接使用,但只能直接编译成nginx组成部分,只要nginx启动,那么这个模块就一定会启动,它不支持动态装卸载。但是Tengine对nginx的改进使得Tengine支持模块动态装卸载。
5.2 高可靠性
这是已经经过市场广泛验证的;它的高可靠性是靠其特殊的工作机制来实现的,其高可靠性依赖于主控进程与工作进程或工作线程的架构来实现的。虽然形容为特殊但是其实httpd也是这么工作的。nginx的组成部分实际上是由一个主控进程master加多个子进程worker共同组成的,它有一个主控进程master,主控进程并不负责接收并响应任何用户请求,主控进程负责生成多个工作进程worker。其主控进程主要负责读取并验证即解析配置文件、创建绑定或关闭套接字、以及启动或终止维护worker进程的个数、还有无需重启进程让新配置文件中的新配置加载甚至于完成平滑版本升级等等。而worker子进程有多种种类,有的worker是实现缓存加载的,这在其反向代理模式中才有用、而有些是负责响应用户请求说白了就是接收传入并处理客户端的连接请求的、此外worker进程中还有一种进程叫做Cache Manager用来实现缓存管理。
5.3 低内存消耗
由于Nginx是使用一个内存响应n个请求的,所以它对内存的消耗非常低,有人做过统计说1w个保持连接keep-alive状态或模式下的connection,Nginx只需要消耗2.5M内存来维护。
5.4 支持热部署
所谓热部署指的是如果我们的配置文件更新了不用重启nginx,新配置文件就能够生效了。甚至于nginx的版本更新了,如现在用的是1.19的版本想升级到1.21,1.19的版本不用停机,1.21的慢慢就会切上去了。过后等1.21的切换完成了可以让1.19的再下线。所以他支持热部署,因此这里的热部署指的是不停机而更新配置文件或者是更换日志文件即日志文件的滚动也包括升级程序版本等等都能实现。这就是热部署的功能。
5.5 支持事件驱动机制、AIO(异步IO)、mmap(内存映射机制)
5.6 通过差距(mod_secdownload)可实现文件URL地址加密。
六、nginx实战过程 6.1 安装依赖包
小编使用的操作系统是CentOS 7.6。
nginx安装依赖GCC、openssl-devel、pcre-devel、zlib-devel软件库。
Pcre全称(Perl Compatible Regular Expressions),中文perl兼容正则表达式,pcre官方站点。
nginx官方源码下载地址:https://nginx.org/en/download.html
6.2 开始编译
使用./configure --help查看各模块使用情况,用 --without-http_ssi_module 方式关闭不需的模块。可用 --with-http_perl_modules 方式安装需要的模块。
6.2.1 编译命令
6.2.2 测试nginx配置文件是否正常
6.2.3 启动nginx服务器
6.2.4 nginx其他命令
/usr/local/nginx/sbin/nginx -V 查看已经编译的参数。
使用kill命令操作nginx。格式:kill -信号 PID
信号名称
- TERM,INT 快速关闭
- QUIT 优雅的关闭,保持吸纳有的客户端连接
- HUP 重启应用新的配置文件
- USR1 重新打开日志文件
- USR2 升级程序
- WINCH 优雅的关闭工作进程
七、nginx基础配置文件配置基础配置文件
测试配置文件是否正常
八、如何对nginx进行监控开启 nginx 监控服务
8.1 开启状态页
8.2 配置登录密码
完成后会在 /usr/local/nginx/conf/ 目录下生成 htpasswd 文件。
8.3 访问URL
- active connections – 活跃的连接数量
- server accepts handled requests — 总共处理了16个连接 , 成功创建16次握手, 总共处理了18个请求
- Reading — 读取客户端的连接数
- Writing 响应数据到客户端的数量
- Waiting 开启 keep-alive 的情况下,这个值等于 active – (reading+writing), 即 Nginx 已处理完正在等候下一次请求指令的驻留连接
nginx的功能多,使用起来需要注意的知识点也多,小编接下来将分几篇文章将nginx的一些使用心得分享出来,一起学习使用nginx,共同进步。
nginx-官方文档
nginx优化
【Linux下玩转nginx系列——初识nginx及其使用入门】
文章图片
推荐阅读
- Opencv Cookbook阅读笔记(用直方图统计像素)
- 拉格朗日对偶
- 第二节:SpingBoot单元测试
- 这8个JS 新功能,你应该去尝试一下
- #yyds干货盘点# 详解JavaScript中的闭包
- OpenHarmony 源码解析之DFX子系统-标准系统接口使用说明
- Shell脚本画图形
- #yyds干货盘点#CCNA学习记录4
- Shell脚本练习三