您的位置:首页 > 理论基础 > 计算机网络

Nginx(语法):07---HTTP模块之(http模块概述、http模块核心指令)

2020-05-24 10:33 531 查看

一、Nginx的系统架构

  • 在正式提供服务的产品环境下,部署Nginx时都是使用一个master进程来管理多个worker进程,一般情况下,worker进程的数量与服务器上的CPU核心数相等。每一个worker进程都是繁忙的,它们在真正地提供互联网服务,master进程则很“清闲”,只负责监控管理worker 进程。worker进程之间通过共享内存、原子操作等一些进程间通信机制来实现负载均衡等功能
  • 部署后Nginx进程间的关系如下图所示:

  • Nginx按照master/worker方式配置同时启动多个进程有以下两点: 由于master进程不会对用户请求提供服务,只用于管理真正提供服务的worker进程, 所以master进程可以是唯一的,它仅专注于自己的纯管理工作,为管理员提供命令行服务, 包括诸如启动服务、停止服务、重载配置文件、平滑升级程序等。master进程需要拥有较大 的权限,例如,通常会利用root用户启动master进程。worker进程的权限要小于或等于master 进程,这样master进程才可以完全地管理worker进程。当任意一个worker进程出现错误从而导 致coredump时,master进程会立刻启动新的worker进程继续服务
  • 多个worker进程处理互联网请求不但可以提高服务的健壮性(一个worker进程出错 后,其他worker进程仍然可以正常提供服务),最重要的是,这样可以充分利用现在常见的SMP多核架构,从而实现微观上真正的多核并发处理。因此,用一个进程(master进程)来 处理互联网请求肯定是不合适的。另外,为什么要把worker进程数量设置得与CPU核心数量一致呢?这正是Nginx与Apache服务器的不同之处。在Apache上每个进程在一个时刻只处理 一个请求,因此,如果希望Web服务器拥有并发处理的请求数更多,就要把Apache的进程或 线程数设置得更多,通常会达到一台服务器拥有几百个工作进程,这样大量的进程间切换将 带来无谓的系统资源消耗。而Nginx则不然,一个worker进程可以同时处理的请求数只受限于 内存大小,而且在架构设计上,不同的worker进程之间处理并发请求时几乎没有同步锁的限 制,worker进程通常不会进入睡眠状态,因此,当Nginx上的进程数与CPU核心数相等时(最好每一个worker进程都绑定特定的CPU核心),进程间切换的代价是最小的

二、HTTP模块介绍

  • http配置块用来标识nginx的http服务,这部分控制了HTTP模块的方方面面,是使用最多的一个部分
  • 在http配置块中可以包含: server模块
  • location模块
  • 指令等

三、HTTP模块核心指令

  • 本部分的配置指令用于处理HTTP连接,因此, 该模块提供了相当数量的指令。为了更容易理解这些指令,我们下面将它们划分为不同的类型

①客户端指令

  • 这一组指令用于处理客户端连接本身的各个方面以及不同类型的客户端

②文件IO指令

  • 这些指令用于控制Nginx如何投递静态文件以及如何管理文件描述符

③Hash指令

  • 这组Hash指令控制Nginx分配给某些变量多大的静态内存。在启动和重新配置时,Nginx会计算需要的最小值
  • 例如,在Nginx发出警告时,只需要调整一个*_hash_max_size指令的参数值就可以达到效果;*_hash_bucket_size变量被设置了默认值,以便满足多处理器缓存行降低检索锁需要的检索查找,因此基本不需要改变
  • 额外更多详细信息参阅:http://nginx.org/en/docs/hash.html

④Socket指令

  • Socket指令描述了Nginx如何设置创建TCP套接字的变量选项

四、配置文件案例

[code]http {
include /opt/local/etc/nginx/mime.types;

default_type application/octet-stream;

sendfile on;

tcp_nopush on;

tcp_ondelay on;

keepalive_timeout 65;

server_names_hash_max_size 1024;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐