第一章初识Nginx

Nginx知识详解(理论+实战更易懂) Nginx:engine X ,2002年开发,分为社区版和商业版(nginx plus ) 2019年3月11日 F5 Networks 6.7亿美元的价格收购。Nginx是免费的、开源的、高性能的HTTP和反向代理服务器、邮件代理服务器、以及TCP/UDP代理服务器。解决C10K问题(10K Connections)。nginx newsTengine:由淘宝网发起的Web服务器项目。它在Nginx的基础上,针对大访问量网站的需求,添加 了很多高级功能和特性。 阅读详情

最近开始对nginx做系统学习,决定把自己学到的东西整理成文章,方便以后查看。

1、nginx是什么?

       百度百科中给出的解释为:

        Nginx ("engine x") 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器。Nginx是由Igor Sysoev为俄罗斯访问量第二的Rambler.ru站点开发的,第一个公开版本0.1.0发布于2004年10月4日。其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。

        Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。由俄罗斯的程序设计师Igor Sysoev所开发,供俄国大型的入口网站及搜索引擎Rambler(俄文:Рамблер)使用。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好。

2、为什么选择Nginx?

        为什么选择Nginx?因为它具有以下特点: 

        (1)、更快

        这里表现在两个方面:一方面在正常情况下,单次请求会得到更快的响应;另一方面,在高峰,Nginx比其它web服务器更快的响应请求

        (2)、高扩展性

        Nginx的设计极具扩展性,它完全是由多个不同功能、不同层次、不同类型且耦合度极低的模块组成。当对某一个模块进行修复或者升级时,可专注模块本身,无需在意其它。而且在HTTP模块中,还设计了HTTP过滤器模块:一个正常的HTTP模块在处理完请求后,会有一串HTTP过滤器模块对其请求结果进行再处理。

        Nginx的模块都是嵌入到二进制文件中执行的,无论官方发布的模块还是第三方模块都是如此。这使得第三方模块一样具备及其优秀的性能,充分利用Nginx的高并发性。

        (3)、高可靠性

        Nginx的高可靠性来自其和兴框架的代码的优秀设计、模块设计的简单性。我个worker进程相对独立,master进程在1个worker进程出错时可以快速拉起新的worker子线程。

        (4)、低内存消耗

        一般情况下,10000个非活跃的HTTP Keep-Alive连接在Nginx中仅消耗2.5MB的内存。

        (5)、单机支持10W以上的并发连接

理论上,Nginx支持的并发连接上限取决于内存,10W远未封顶。

        (6)、热部署

        master管理进程与worker工作进程的分离设计,使得Nginx能够提供热部署功能,既可以在7*24小时不间断服务的前提下,实际Nginx的可执行文件。当然,他也支持不停止服务更新配置、更换日志文件等功能。

        (7)、最自由的BSD许可协议        

        BSD许可协议不只是允许用户免费试用Nginx,它还允许用户在自己的项目中直接使用或修改Nginx源码,然后发布

        以上7个当然不是Nginx的全部,它还有更多模块满足应用场景

3、Nginx服务器类型

        (1)、Web服务器

        Web服务器用于提供HTTP(包括https)的访问,例如Nginx、Apache、IIS等,虽然Tomcate也能够做到,但这并不是它的主要功能,而且其性能也不如专门的Web服务器。

        (2)、应用程序服务器

        用于应用程序的运行,包括的工作有:客户会话管理、业务逻辑管理、数据操作等。

        (3)、代理服务器

        (4)、反向代理

        (5)、后台服务器

        (6)、CDN缓存服务器

4、使用Nginx的必备软件

    (1)、GCC编译器

        GNU编译器套件(GNU Compiler Collection)包括C、C++、Objective-C、Fortran、Java、Ada和Go语言的前端,也包括了这些语言的库(如libstdc++、libgcj等等)。GCC的初衷是为GNU操作系统专门编写的一款编译器。

        yum install -y gcc

        GCC是必须的编译工具。在编写HTTP模块中,需要用到G++编译器

        yun install -y gcc-c++

    (2)、PCRE库

        PCRE(Perl Compatible Regular Expressions)是一个Perl库,包括 perl 兼容的正则表达式库。这些在执行正规表达式模式匹配时用与Perl 5同样的语法和语义是很有用的。Boost太庞大了,使用boost regex后,程序的编译速度明显变慢。测试了一下,同样一个程序,使用boost::regex编译时需要3秒,而使用pcre不到1秒。因此改用pcre来解决C语言中使用正则表达式的问题

        yum  install  -y pcre pcre-devel

    (3)、zlib库        

        zlib是提供数据压缩用的函式库。

        yum  install  -y zlib zlib-devel

    (4)、OpenSSL开发库

        如果我们的服务器不只是支持HTTP,还需要在更加安全的SSL协议上传输HTTP,那么我们就需要OpenSSL了。

         yum  install  -y openssl openssl-devel

5、Nginx的命令行控制

   (1)、默认方式启动

        /usr/local/nginx/sbin/nginx   

        ——取默认路径下的配置文件:/usr/local/nginx/conf/nginx.conf

   (2)、指定配置文件启动     

     /usr/local/nginx/sbin/nginx  -c  /tmp/nginx.conf

        ——使用-c参数指定配置文件

    (3)、指定安装目录

        ——/usr/local/nginx/sbin/nginx  -p  /usr/local/nginx.conf

    (4)、指定全局配置项启动

    /usr/local/nginx/sbin/nginx  -g  "pid /var/nginx/test.pid"

        —— -g参数的约束条件是指定的配置项不能与默认条件下的nginx.conf中的配置项冲突,否则无法启动。另外一个约束条件是以-g方式启动的Nginx服务执行其它命令时,需要把-g参数带上,否则可能出现配置项不匹配的情况,如果要停止服务,则执行如下代码:

     /usr/local/nginx/sbin/nginx  -g  "pid /var/nginx/test.pid"  -s  stop

    (5)、测试配置信息是否正确

    /usr/local/nginx/sbin/nginx  -t

    (6)、在测试阶段不输出信息

     /usr/local/nginx/sbin/nginx  -t  -q

    ——使用-q,可以不把error级别以下的信息输出

    (7)、显示版本信息

      /usr/local/nginx/sbin/nginx  -v

    (8)、显示编译阶段的参数

    /usr/local/nginx/sbin/nginx  -V

    (9)、快速的停止服务

    /usr/local/nginx/sbin/nginx  -s  stop

    ——实际上,如果通过kill命令直接向nginx master进程发送TERM或者INT新号,效果是一样的,首先通过ps查找ningx的master进程ID

    kill -s SIGTERM 10801   或者     kill -s SIGINT 10801

    (10)、优雅的停止服务

     /usr/local/nginx/sbin/nginx  -s  quit

    首先会关闭监听接口,停止接收新的连接,然后把当前正在处理的连接全部处理完,最后在退出进程。可以直接发送QUIT信号给master进程停止服务,其效果和quit相同

     kill   -s   SIGQUIT <NGINX MASTER PID> 

    如果希望优雅的停止worker,可以适应WINCH:

    kiill   -s   SIGWINCH   <NGINX MASTER PID> 

    (11)、使运行中的Nginx重读配置项并生效

    /usr/local/nginx/sbin/nginx  -s  reload

    使用kill的HUP命令来实现

    kiill   -s   SIGHUP   <NGINX MASTER PID> 

    (12)、日志文件回滚

    使用reopen命令重新打开日志文件,这样可以把当前日志文件改名或者保存到其它文件夹下面,在重新打开生成新的日志文件。

    /usr/local/nginx/sbin/nginx  -s  reopen

    kiill   -s   SIGUSR1   <NGINX MASTER PID>

    (13)、平滑升级Nginx

    当Nginx服务升级到新的版本时,必须将旧的二进制文件Nginx替换掉,Nginx支持不重启服务来完成版本更新的平滑升级

    升级时包括如下步骤: 

        1)、通知正在运行的旧版本Nginx准备升级。通过向master进程放usr2信号可以达到目的。例如:  kiill   -s   SIGUSR2   <NGINX MASTER PID>,这时运行中的Nginx会将pid文件重命名,将 /usr/local/nginx/logs/nginx.pid重命名为 /usr/local/nginx/logs/nginx.pid.oldbin,这样新的Nginx才能启动成功。

        2)、启动新版本的nginx,可以通过以上介绍的任意一种实现。然后通过ps命令可以发现新旧版本的Nginx在同时运行。

        3)、通过kill命令向旧版本发出SIGQUIT命令

    (14)、显示命令行帮助

    使用-h或者-?参数会显示支持的所有命令参数。


欢迎关注微信公众号



初识Nginx confsbinhtmllogsxxx_temp (运行时候的一些缓存)动静分离,也称为静态内容分离,是一种将动态生成的网页内容和静态资源进行拆分和分离的技术策略。在传统的 Web 应用程序中,动态网页内容和静态资源(如图片、CSS 文件、JavaScript 文件等)通常由同一个应用服务器提供。当用户请求一个页面时,应用服务器会处理逻辑、从数据库或其他数据源中获取数据,并生成完整的 HTML 页面,再将其发送给用户的浏览器。 阅读详情

相关推荐

西门子OMAC PackML V2022在S7-1200/S7-1500中的状态机设计与应用实践

本文详细解析了西门子OMAC PackML V2022在S7-1200/S7-1500中的状态机设计与应用实践。通过实际案例和代码示例,介绍了状态机的基础认知、硬件配置、逻辑开发、调试技巧以及与MES系统集成的高级应用,帮助工程师高效实现设备自动化控制。

weixin_29255731的博客 531

nginx详解

把动态请求和静态请求分开,不是将动态页面和静态页面物理分离,可以理解为nginx处理静态页面,tomcat处理动态页面。动静分离大致分为两种:一、纯粹将静态文件独立成单独域名放在独立的服务器上,也是目前主流方案;二、将动态跟静态文件混合在一起发布,通过nginx分开。

顺其自然~专栏 3547

从BSCAN到BAP:深度解析Tessent MBIST逻辑的协同工作机制与设计考量

本文深入解析了Tessent MBIST逻辑中BSCAN Interface、Logic Group Def、Controller与BAP模块的协同工作机制。文章以一条测试指令的完整路径为例,详细阐述了数据流与控制流如何跨模块、跨时钟域协同工作,并重点探讨了MBIST BAP在协议转换与流量管理中的核心桥梁作用,为芯片内建自测试的集成与调试提供了关键的设计考量和实战技巧。

kappa的博客 482

Nginx 详解

主要对于 Nginx 的知识进行较全面的总结

m0_53067943的博客 5495

LVI-SAM适配KITTI数据集避坑指南:IMU频率与数据同步问题解析

本文深入解析了将LVI-SAM框架适配KITTI数据集时,在IMU频率与多传感器数据同步方面遇到的核心挑战与解决方案。针对KITTI数据集中sync与extract两种数据包的差异,文章提供了从数据选择、参数调优到时间戳诊断与修复的完整避坑指南,帮助开发者实现稳定高效的SLAM系统部署。

7z8x2c4v6b9的博客 248

利用Cesium引擎实现大疆智图B3DM三维模型的高效加载与可视化

本文详细介绍了如何利用Cesium引擎高效加载与可视化大疆智图B3DM三维模型。通过性能优化实战和典型应用场景分析,帮助开发者掌握模型预处理、渲染参数调优及高级功能实现技巧,提升大规模倾斜摄影数据的网页端展示效率。

weixin_29231725的博客 219

Nginx详解(超级详细)

Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好。并发能力: 50,000。

As_Yua的博客 8605

别再凭感觉了!手把手教你用Excel搞定激光器MPE与NOHD安全计算(附模板下载)

本文详细介绍了如何利用Excel自动化计算激光器的MPE(最大允许照射量)和NOHD(标称眼危害距离),提升激光安全评估的效率和准确性。通过实战案例和模板下载,帮助工程师快速掌握GB/T 7247标准中的关键计算,避免常见错误,适用于激光测距仪等设备的安评工作。

weixin_30954265的博客 467

01-Nginx初识

文章目录Nginx初识一、几个问题?1.1 Nginx的作用、应用场景?1.2 正向代理和反向代理?二、安装三、Nginx常见命令3.1 启动停止四、简单实战4.1 配置静态资源服务器4.2 配置负载均衡4.3 路由配置五、负载策略5.1 轮询策略5.2 加权轮询5.3 最少连接数策略5.4 Ip Hash策略六、参考 Nginx初识 在ubuntu 18.04下面的安装教程 一、几个问题? ...

my_momo_csdn的博客 534

向量乘法器设计

同样基于Wallace树乘法器,我们来构造向量乘法器。 在一些矩阵运算中经常用到向量的相乘运算,本例以4维向量为例子介绍向量乘法器的verilog HDL设计。 设向量a = (a1, a2, a3, a4), b = (b1, b2, b3, b4)。 则a 与 b的点乘为:a * b = a1 b1 + a2 b2 + a3 b3 + a4 b4, 即向量对应位置的值相乘,再相加...

Reborn Lee 2969

【制作100个Unity游戏之36】用unity从零开始实现类《开心消消乐》的三消类消除解压小游戏

Unity甜品消除游戏开发摘要 本文介绍了使用Unity开发甜品消除游戏的核心实现步骤: 冰块阵列生成 通过GlobalDef定义全局参数(9行7列网格) IceSpawner脚本动态生成网格化冰块阵列 添加Resolution脚本实现多分辨率适配 随机水果生成 创建FruitSpawner作为水果容器 FruitItem脚本管理水果属性(行列索引、类型) 支持动态创建水果精灵并设置位置 关键技术点 使用Instantiate动态生成预制体 通过localPosition精确控制网格布局 分辨率适配算法保持

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 1291

初识nginx

初识nginx常用功能

weixin_44939170的博客 640

基于Matlab的自动泊车系统开发:利用模糊控制实现智能停车解决方案的详细教程

Matlab是一种广泛应用于科学计算、工程建模与仿真的编程语言,其强大的工具箱和简洁的编程语法,使其成为开发自动泊车系统的理想选择。在开始编写代码之前,我们需要搭建Matlab的工作环境,并熟悉相关的工具箱,如Fuzzy Logic Toolbox,用于实现模糊控制。首先,确保你已经安装了Matlab软件,并加载了必要的工具箱。接下来,我们将逐步讲解如何在Matlab中实现自动泊车系统。

qq_38334677的博客 663

【Nginx】初识Nginx

一、前言 今天我们就来详细谈一谈Nginx!既然说到Nginx我们就不得不先来说一下web服务器和应用服务器。 二、服务器 1、 web服务器 web服务器也叫网页服务器或web服务器。WEB服务器也称为WWW(WORLD WIDE WEB)服务器,主要功能是提供网上信息浏览服务。可以解析(handles)HTTP协议。当Web服务器接收到一个HTTP请求(request),会返回一个HTTP响应(response),例如返回一个HTML页面。比如我们经常会用到的:Apache、Nginx、IIS等,它们的

qq_41557293的博客 2425

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

Nginx初识

Nginx初识 master:配置文件分析和加载、管理worker、平滑升级; worker:处理用户请求; cache loader, cache manager:缓存加载和缓存管理 nginx的其它的二次发行版:tengine、OpenResty Nginx模块: 核心模块:core module 标准模块: HTTP modules: Standard HTTP m...

super2feng博乐世界 1585

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

初识Nginx遇到的坑---Ip输入问题

初识Nginx,照着网上的资料配置了库,写好了helloworld外加块,编译也通过了但当使用时遇到了坑。编译完后,一般不就是打开网页然后输入本地ip测试嘛,我照着做了,结果却是: 这是什么鬼,我的程序有问题吗,找呀找终于找到原因了,这得益于这位网友的操作:https://kb.cnblogs.com/page/98352/ 他写好程序,编译后,采用的是命令行访问,具体就是:c...

007的博客 437

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Nginx-1 初识 Nginx

摘要:本文介绍了Nginx的适用场景(静态资源托管、反向代理、API服务)和主要优点(高并发、高性能、可扩展性等)。详细讲解了Nginx的四个组成部分,并提供了从源码编译安装Nginx的具体步骤。文章还包含常用Nginx命令和使用方法,如启动服务、验证配置、热部署更新等操作指南。最后展示了如何在不中断服务的情况下进行 Nginx 版本升级的热部署过程。

qq_56517253的博客 988

Nginx知识点:初识Nginx

Nginx的配置文件(通常名为nginx.conf)是Nginx运行所必需的,它定义了Nginx的工作方式、监听端口、服务器配置、请求处理规则等。:Nginx采用了不同的设计思路和技术架构,如异步非阻塞的事件处理机制、master-slave模型等,使其在处理高并发请求时具有更高的效率和更好的稳定性。:随着计算机硬件技术的不断进步,服务器的处理能力得到了显著提升。综上所述,Nginx的组成是一个复杂而高效的系统,它通过核心功能、模块结构、进程模型和配置文件等多个方面的协同工作,提供了强大的Web服务能力。

w1990xw的博客 1610
上一篇: 通过分析 JDK 源代码研究 Hash 存储机制
下一篇: 第二章Nginx配置
springk
博客等级 码龄18年 135粉丝 66原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

springk

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值