一、Nginx简介

Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,Nginx代码完全用C语言从头写成,已经移植到许多体系结构和操作系统。在连接高并发的情况下,Nginx是Apache服务不错的替代品。

二、Nginx相关优点

  • 作为Web服务器,Nginx处理静态文件、索引文件,自动索引的效率非常高
  • 作为代理服务器,Nginx可以实现无缓存的反向代理加速,提高网站运行速度作为负载均衡服务器,Nginx既可以在内部直接支持Rails和PHP,也可以支持HTTP代理服务器对外进行服务,同时还支持简单的容错和利用算法进行负载均衡
  • 在性能方面,Nginx是专门为性能优化而开发的,实现上非常注重效率。它采用内核Poll模型,可以支持更多的并发连接,最大可以支持对5万个并发连接数的响应,而且只占用很低的内存资源
  • 在稳定性方面,Nginx采取了分阶段资源分配技术,使得CPU与内存的占用率非常低。Nginx官方表示,Nginx保持1万个没有活动的连接,而这些连接只占用2.5MB内存,因此,类似DOS这样的攻击对Nginx来说基本上是没有任何作用的
  • 在高可用性方面,Nginx支持热部署,启动速度特别迅速,因此可以在不间断服务的情况下,对软件版本或者配置进行升级,即使运行数月也无需重新启动,几乎可以做到7x24小时不间断地运行
  • 内置的健康检查功能:如果有一个服务器宕机,会做一个健康检查,再发送的请求就不会发送到宕机的服务器了。重新将请求提交到其他的节点上。

三、Nginx相关模块

  • 核心模块:HTTP模块、EVENT模块和MAIL模块
  • 基础模块:HTTP Access模块、HTTP FastCGI模块、HTTP Proxy模块和HTTP Rewrite模块,
  • 第三方模块:HTTP Upstream Request Hash模块、Notice模块和HTTP Access Key模块。

四、Nginx工作流程

  • 首先,master 进程接受到信号后启动,读取配置文件,建好需要listen的socket后,然后再fork出多个woker进程,这样每个work进程都可以去accept这个socket
  • 当一个client连接到来时,所有accept的work进程都会受到通知,但只有一个进程可以accept成功,其它的则会accept失败,Nginx提供了一把共享锁accept_mutex来保证同一时刻只有一个work进程在accept连接,从而解决惊群问题
  • 当一个worker进程accept这个连接后,就开始读取请求,解析请求,处理请求,产生数据后,再返回给客户端,最后才断开连接,这样一个完成的请求就结束了
  • 一个worker进程可以同时处理多个请求,每个worker进程只有一个主线程,而是采用异步非阻塞的方式来处理并发请求。比如同时有多个http request的时候,worker主线程与第一条request建议连接将其处理转发给下游fast cgi后,并不会挂起等待,而是立马处理下一条,可以理解轮询处理。与多线程相比,这种事件处理方式是有很大的优势的,不需要创建线程,每个请求占用的内存也很少,没有上下文切换,事件处理非常的轻量级。并发数再多也不会导致无谓的资源浪费(上下文切换),更多的并发数,只是会占用更多的内存而已。因此nginx 是非常适合处理高并发请求的

五、Nginx如何实现高并发

  • Master进程:主要用来管理worker进程,充当整个进程组与用户的交互接口,同时对进程进行监护。它不需要处理网络事件,不负责业务的执行,只会通过管理worker进程来实现重启服务、平滑升级、更换日志文件、配置文件实时生效等功能。当worker进程异常关闭后,重新启动一个worker进程。
  • 采用异步非阻塞模型:Nginx在处理用户请求时,先建立连接,收到数据后。将请求交给cpu处理。线程接着出处理其他请求,当cpu将上一个请求处理完成后,线程才将cpu处理后的数据传输给客户。

六、FastCGI----Nginx+FastCGI运行原理

FastCGI是一个可伸缩地、高速地在HTTP server和动态脚本语言间通信的接口。相比于CGI更加高效和安全。当web服务器收到动态资源请求时,将其交付给FastCGI处理。当FastCGI和PHP的通信结束以后,将资源传输给用户。使得Nginx可以专心的处理静态资源。

七、Nginx与Apache差异对比

八、Nginx配置文件分析

  • events块

    • 该部分配置主要影响Nginx服务器与用户的网络连接,主要包括:
    • 设置网络连接的序列化
    • 是否允许同时接收多个网络连接
    • 事件驱动模型的选择
    • 最大连接数的配置
  • http块
    • 定义MIMI-Type
    • 自定义服务日志
    • 允许sendfile方式传输文件
    • 连接超时时间
    • 单连接请求数上限
  • server块
    • 配置网络监听
    • 基于名称的虚拟主机配置
    • 基于IP的虚拟主机配置
  • location块
    • location配置
    • 请求根目录配置
    • 更改location的URI
    • 网站默认首页配置

九、Nginx相关配置

  • ACL访问控制列表

    • 基于用户名和密码
    • 基于IP地址的控制
  • 虚拟主机
  • 反向代理
  • 负载均衡
  • 加密访问
  • 地址跳转
  • http2.0配置
  • 前端apache,后端nginx
  • 开启压缩

hbuilderx内置服务器启动失败_Nginx服务器简介与配置相关推荐

  1. d 服务器运行失败,【求助】服务器启动失败,服务器启动时遇到了一些麻烦,请重试...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 [00:02:10]: Not applying level data overrides. [00:02:10]: Not applying world ...

  2. win7计算机不支持此接口,win7系统IIS服务器启动失败显示不支持此接口的解决方法...

    很多小伙伴都遇到过 出错表现为以下几点: 1.World Wide Web Publishing 服务在请求配置数据库更改通知时遇到问题.数据域包含错误号. 2.初始化 World Wide Web ...

  3. linux mysql 安装启动失败,Linux服务器一键安装包的mysql启动失败

    Linux服务器上用一键安装包配置的环境,启动mysql失败,提示如下错误信息: 排查方法: 1.查看服务器的磁盘空间是否正常,登录服务器执行命令 df -h 查看磁盘空间,如果服务器的系统盘或者数据 ...

  4. 华为无线AC 配置内置Portal认证和Radius服务器示例

    配置内置Portal认证示例 组网图形 图1 配置内置Portal认证组网图 · 组网需求 · 配置思路 · 数据规划 · 操作步骤 · 配置文件 组网需求 如图1所示,某企业AC直连AP.通过WLA ...

  5. windows10服务器运行失败,win10遇到服务器启动失败 80端口被占用如何解决

    Win10提示"服务器启动失败,80端口被占用"怎么办?具体解决方法如下 步骤如下: 1.以管理员身份运行cmd; 2.输入:net stop http 注:如果提示是否真的需要停 ...

  6. 无线摄像头 服务器,下一波摄像头僵尸网络来袭!350家厂商的WiFi摄像头内置不安全的Web服务器软件...

    原标题:下一波摄像头僵尸网络来袭!350家厂商的WiFi摄像头内置不安全的Web服务器软件 方法其实很简单,只要在有人编写僵尸网络之前拨掉这些设备? 准备迎接下一波摄像头僵尸网络吧:以牵涉354家厂商 ...

  7. Tomcat服务器启动失败的原因

    Tomcat1.Tomcat服务器启动失败的原因 忘记配置JAVA_HOME.因为tomcat是用java实现的,运行时至少需要JRE环境,否则报错 JAVA_HOME写错了.即使你有JDK环境,to ...

  8. r420服务器故障维修,DELL R420 OMSA IPMI 服务器启动失败

    DELL R420 OMSA IPMI 服务器启动失败. /opt/dell/srvadmin/sbin/srvadmin-services.sh start Starting Systems Man ...

  9. MySQL 服务正在启动,系统错误,服务器启动失败 1607解决办法

    1.如图数据库已经安装成功 2.在net start mysql语句发现服务器启动失败,错误代码1607,检查my.ini 文件里面的basedir=D:\mysql-5.7.21-winx64和da ...

最新文章

  1. 更改 SQL Server 2000 端口号
  2. Nginx负载均衡(1)
  3. Entity Framework 4 数据事务操作
  4. android常用窗口动画,android 自定义dialog,窗口动画,
  5. C/C++[codeup 1967]数组逆置
  6. Linux第二章:5.Xshell安装教程、使用Xshell6进行Linux远程登录
  7. fcm算法matlab实现,fcm算法matlab
  8. 用java操作MySQL编写的高校水电费管理系统
  9. 【HCIE-RS 天梯路】MSDP
  10. 社会工程学攻击案例-网站钓鱼
  11. 【前端就业课 第一阶段】HTML5 零基础到实战(二)超链接
  12. 湖北省最新测绘资质审批拟批准结果已公示,看看有没有你们公司
  13. 推送原理解析 极光推送使用详解
  14. 查看思科交换机出厂时间
  15. 团队建设的一些思考和实践
  16. 大数据时代带来的伦理问题
  17. 关于以太网光纤收发器,逻辑隔离与物理隔离的理解与区别
  18. AppCode 是一款强大的iOS代码编写利器丨功能介绍
  19. 汽车芯片玩家如何分类?有哪些呢?
  20. HTML基础知识(八)——H5新增选择器

热门文章

  1. ASP.NET MVC:Razor 引入命名空间
  2. XP无法显示经典模式控制面板
  3. DNSPod揭6省断网重大事故内幕:网游私服恶斗
  4. Centos5上安装JRE和LUMAQQ
  5. 15.Numpy之点乘、算术运算、切片、遍历和下标取值
  6. MVC HtmlHelper扩展——实现分页功能
  7. thinkphp整合Ueditor编辑器
  8. Android 学习心得(2)——Android内置数据库SQLite
  9. [转]使用xcode4 workspace 多个project协同工作
  10. 实战Makefile