nginx 基础知识

Posted 程序员之圈

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了nginx 基础知识相关的知识,希望对你有一定的参考价值。

nginx 是俄罗斯人编写的十分轻量级的HTTP服务器,Nginx,它的发音为“engine X”,是一个高性能的HTTP和反向代理服务器,同时也是一个 IMAP/POP3/SMTP 代理服务器。

Nginx优点:

  • 模块化设计,较好的扩展性

  • 高可靠性

  • 基于master/worker架构设计

  • 支持热部署;可在线升级

  • 不停机更新配置文件、更好日志文件、更新服务器查询版本

  • 较低的内存消耗

  • 1万个keep-alive连接模式下的非活动连接仅消耗2.5M内存

  • event-driven机制:支持aio,mmap(内存映射)


Nginx的程序架构:


一个master进程,可生成一个或多个worker进程

  • master:负责加载分析配置文件、管理worker进程、平滑升级、...

  • worker:处理并响应用户请求

一个master有多个worker,每个worker可响应n个请求,每个worker有核心模块core和外围的诸多模块modules组成,为了实现http功能有http协议的ht_core模块,为了功能完善还有很多其它模块,如实现负载均衡的ht_upstream模块,ht_proxy反代模块,Fastcgi模块ht_fastcgi模块;

Nginx的模块化设计:

高度模块化的设计是 Nginx 的架构基础。Nginx 服务器被分解为多个模块,每个模块就是一个功能模块,只负责自身的功能,模块之间严格遵循“高内聚,低耦合”的原则。

  • 核心模块

核心模块是 Nginx 服务器正常运行必不可少的模块,提供错误日志记录、配置文件解析、事件驱动机制、进程管理等核心功能。

  • 标准 HTTP 模块

标准 HTTP 模块提供 HTTP 协议解析相关的功能,如:端口配置、网页编码设置、HTTP 响应头设置等。

  • 可选 HTTP 模块

可选 HTTP 模块主要用于扩展标准的 HTTP 功能,让 Nginx 能处理一些特殊的服务,如:Flash 多媒体传输、解析 GeoIP 请求、SSL 支持等。

  • 邮件服务模块

邮件服务模块主要用于支持 Nginx 的邮件服务,包括对 POP3 协议、IMAP 协议和 SMTP 协议的支持。

  • 第三方模块

第三方模块是为了扩展 Nginx 服务器应用,完成开发者自定义功能,如:Json 支持、Lua 支持等。

Nginx的高并发得益于其采用epoll模型,异步非堵塞,而Apache采用的是select模型:

select的特点:是遍历所有的句柄才能获取哪些句柄有事件通知。

epoll的特点:是直接定位句柄,句柄上事件马上响应的。


安装Nginx:

Centos:yum install nginx -y

Ubuntu:apt install nginx -y

官方提供的最新版安装方法 (http://nginx.org/en/linux_packages.html#mainline):

wget http://nginx.org/keys/nginx_signing.key

apt-key add nginx_signing.key


echo deb http://nginx.org/packages/mainline/ubuntu/ xenial nginx >> /etc/apt/sources.list

echo deb-src http://nginx.org/packages/mainline/ubuntu/ xenial nginx >> /etc/apt/sources.list

apt update

apt upgrade

apt install nginx -y


常用的命令:

开启/重启/关闭: service nginx start/restart/stop

查看nginx进程:ps -ef | grep nginx

平滑重启:nginx -s reload 或者:kill -HUP 进程号


应该需要手动创建nginx用户和nginx用户组。

groupadd nginx

useradd nginx -g nginx -s /sbin/nologin -M

编译的时候,指定执行的用户主和用户组

--with-user=nginx 

--with-group=nginx


nginx编译安装完成以后,修改nginx.conf

user nginx nginx;


以上是关于nginx 基础知识的主要内容,如果未能解决你的问题,请参考以下文章

nginx 个人详解,基础知识,要点总结

nginx基础知识

Nginx基础知识之————RTMP模块中的中HLS专题(翻译文档)

Web 基础——Nginx

Web 基础——Nginx

nginx 基础知识