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 基础知识的主要内容,如果未能解决你的问题,请参考以下文章