Nginx(一):Nginx介绍

简介:

关于Nginx:

Nginx主要的2个用途是静态页面web服务器和7层反向代理web服务器(常见的协议都可以做反向代理),而且它本身还具有很大的缓存功能,但是一般缓存文件元数据(描述符)或者文件数据,但是缓存能力有限,如果要发挥其缓存能力就需要用第三方扩展。

其实真正实现缓存功能是varnishsquid(轻量级的,很多用于CDN服务器)。Varnish是专业级的缓存工具,但任何缓存工具本身都是反向代理,所以它本身也是一个web的反向代理服务,不过它的反向代理功能就差很多。

web反向代理领域尤其是负载均衡方面有一个强大的对手就是HAproxy,从名字上看是HA,但是它本身实现的并不是一种高可用服务,它提供的是基于应用层和TCP的反向代理,它可以应用在MySQLHTTP等做负载均衡。

在中大型站点中可能会用到MogileFS,它用作图片存储,是一种分布式文件系统。

Apache功能也很多,但是它诞生到现在太久了,所以它是一个重量级的WEB服务器,它不支持高并发,但是它以稳定为主。在MPM中早先流行的是prefork,它的模式是一个进程响应一个用户请求,如果一个进程需要1M内存,那如果1万呢,要多少内存?太消耗资源,这也就是后来Apache引入了event机制。面对Apache的现状也就是出现了c10k的问题,就是1万连接。还有人专门讨论过,所以就出现了轻量级的WEB服务器,能够突破10K


基本功能:

静态资源的WEB服务器,另外还可以自动缓存打开的文件描述符(如果文件被用户访问过它就会直接缓存在内存中)

反向代理服务器,缓存、负载均衡

支持Fastcgi协议,可以和PHPFPM协议工作。

Nginx是模块化的,从1.9.1开始支持动态装载。支持ZIP过滤去,SSI和图像大小调整。不过Tengine可以使用DSO

基于名称和IP做虚拟主机、支持长连接、支持平滑升级、URL地址重写、支持速率和并发限制等。


基本结构:

Nginx的结构和Apache类似,有一个Master进程和多个work进程(也可称作线程,原因看说明1)。至于有多少可以自己调整,一个work进程可以相应多个用户请求,所以不是一对一的。理论来说一个work进程就够了,但是到底要启动多少个work进程,这取决于你的CPU物理核心数。work进程数量小于物理核心数量。也就是尽量避免进程切换,同时也要给操作系统留一个物理核心。极具性能的做法是,留出1个物理核心给操作系统,这个可以指定。其余的都分配给Nginxwork进程。对于操作系统来说一个物理核心就是一个CPU。比如2个物理CPU,每个是6核心,同时启动超线程,那么在系统上看到的就是24核心,也就是24CPU


一般会这样做,就是明确指定操作系统使用一个物理核心,然后手动的把其他核心的都绑定到Nginxwork进程上去。这就是Nginx优化之一。这么做就是为了避免切换次数。

如果Nginx作为反向代理的话,还会启动其他进程,比如管理缓存的。


Nginx是基于事件驱动机制,包括kqueueepoll/dev/poll;另外它还支持消息通知也就非事件驱动的selectpoll等,不过这些也不是真正意义的通知。

支持sendfilesendfile可以提高效率


用户访问网页的基本过程(不包含缓存功能):

  1. 一个请求发到内核(通过socket套接字,到网卡,然后会被Linux的防火墙接收,如果请求的对象是自己,它会判断是不是本地进程的端口,如果是就直接提交到用户空间的相应进程,否则就丢弃)

  2. 内核交给用户空间的服务进程,服务进程发现用户请求的是一个页面文件,然后服务进程发起系统调用

  3. 内核通过磁盘IO获取响应内容

  4. 内核获取了数据之后交给服务进程

  5. 然后服务进程封装成响应报文,然后再送进内核

  6. 由内核向外响应




      本文转自linuxjavachen  51CTO博客,原文链接:http://blog.51cto.com/littledevil/1901385,如需转载请自行联系原作者




相关文章
|
Web App开发 安全 应用服务中间件
|
Web App开发 应用服务中间件 nginx
nginx介绍
Nginx 读音为 Engine X, 是俄国人IgorSysoev 开发的轻量级高性能Web 服务器。如果说Lighttpd 是后起之秀,那Nginx 可以称得上是青出于蓝而胜于蓝了。Nginx 的发布要比Lighttpd晚几年,可以说是Lighttpd 的晚辈了,开始的时候,Nginx 主要被用于提供高性能的反向代理服务器和邮件服务器的前端代理,随着Nginx 的高性能被更多的人了解,Nginx 也得到了迅速的普及。
|
11月前
|
应用服务中间件 Linux 网络安全
Centos 8.0中Nginx配置文件和https正书添加配置
这是一份Nginx配置文件,包含HTTP与HTTPS服务设置。主要功能如下:1) 将HTTP(80端口)请求重定向至HTTPS(443端口),增强安全性;2) 配置SSL证书,支持TLSv1.1至TLSv1.3协议;3) 使用uWSGI与后端应用通信(如Django);4) 静态文件托管路径设为`/root/code/static/`;5) 定制错误页面(404、50x)。适用于Web应用部署场景。
983 87
|
7月前
|
编解码 应用服务中间件 Linux
centos配置nginx-rtmp实现ffmpeg转码rtsp为rtmp视频流
centos配置nginx-rtmp实现ffmpeg转码rtsp为rtmp视频流
620 1
|
11月前
|
负载均衡 应用服务中间件 nginx
Nginx配置与命令
Nginx 是一款高性能的 HTTP 和反向代理服务器,其配置文件灵活且功能强大。本文介绍了 Nginx 配置的基础结构和常用指令,包括全局块、Events 块、HTTP 块及 Server 块的配置方法,以及静态资源服务、反向代理、负载均衡、HTTPS 和 URL 重写等功能实现。此外,还提供了常用的 Nginx 命令操作,如启动、停止、重载配置和日志管理等,帮助用户高效管理和优化服务器性能。
1010 14
|
7月前
|
Ubuntu 安全 应用服务中间件
详细指南:配置Nginx服务器在Ubuntu平台上
以上步骤涵盖了基本流程:从软件包管理器获取 Ngnix, 设置系统服务, 调整UFW规则, 创建并激活服务器块(也称作虚拟主机), 并进行了初步优化与加固措施。这些操作都是建立在命令行界面上,并假设用户具有必要权限(通常是root用户)来执行这些命令。每个操作都有其特定原因:例如,设置开机启动确保了即使重启后也能自动运行 Ngnix;而编辑server block则定义了如何处理进入特定域名请求等等。
412 18
|
7月前
|
Ubuntu 安全 应用服务中间件
详细指南:配置Nginx服务器在Ubuntu平台上
以上步骤涵盖了基本流程:从软件包管理器获取 Ngnix, 设置系统服务, 调整UFW规则, 创建并激活服务器块(也称作虚拟主机), 并进行了初步优化与加固措施。这些操作都是建立在命令行界面上,并假设用户具有必要权限(通常是root用户)来执行这些命令。每个操作都有其特定原因:例如,设置开机启动确保了即使重启后也能自动运行 Ngnix;而编辑server block则定义了如何处理进入特定域名请求等等。
677 17
|
8月前
|
数据建模 应用服务中间件 PHP
配置nginx容器和php容器协同工作成功,使用ip加端口的方式进行通信
本示例演示如何通过Docker挂载同一宿主目录至Nginx与PHP容器,实现PHP项目运行环境配置。需注意PHP容器中监听地址修改为0.0.0.0:9000,并调整Nginx配置中fastcgi_pass指向正确的IP与端口。同时确保Nginx容器中/var/www/html权限正确,以避免访问问题。
配置nginx容器和php容器协同工作成功,使用ip加端口的方式进行通信
|
9月前
|
应用服务中间件 网络安全 nginx
配置Nginx以支持Websocket连接的方法。
通过上述配置,Nginx将能够理解WebSocket协议的特殊要求,代理Websocket流量到合适的后端服务器。注意,Websocket并不是HTTP,尽管它最初是通过HTTP请求启动的连接升级,因此保证Nginx了解并能够妥善处理这种升级流程是关键。
1968 10
|
8月前
|
Ubuntu 应用服务中间件 Linux
在Ubuntu上配置Nginx实现开机自启功能
至此,Nginx应该已经被正确地设置为开机自启。在Ubuntu中利用 `systemd`对服务进行管理是一种高效的方式,为系统管理员提供了强大的服务管理能力,包括但不限于启动、停止、重启服务,以及配置服务的开机自启动。通过这些简洁的命令,即使是对Linux不太熟悉的用户也能轻松地进行配置。
394 0