nginx编译安装和功能介绍

nginx介绍

nginx: engine X,是由1994年毕业于俄罗斯国立莫斯科鲍曼科技大学的同学为俄罗斯rambler.ru公司开发的,开发工作最早从2002年开始,第一次公开发布时间是2004年10月4日,版本号是0.1.0。

nginx有商业版和社区版,2019年3月11日F5 Networks 6.7亿美元的价格收购。

nginx 是免费,开源,高性能的HTTP和反向代理服务器,邮件代理服务器,通用TCP/UDP代理服务器。

解决C10K问题(10K Connections)。

官网:http://nginx.org

nginx的其它的二次发行版:

Tengine:由淘宝网发起的Web服务器项目。它在Nginx的基础上,针对大访问量网站的需求,添加了很多高级功能和特性。Tengine的性能和稳定性已经在大型的网站如淘宝网,天猫商城等得到了很好的检验。

从2011年12月开始,Tengine成为一个开源项目,官网 http://tengine.taobao.org/

OpenResty:基于 Nginx 与 Lua 语言的高性能 Web 平台, 章亦春

官网:http://openresty.org/cn/

基础特性:

特性:

?模块化设计,较好的扩展性
?高可靠性
?支持热部署:不停机更新配置文件,升级版本,更换日志文件
?低内存消耗:10000个keep-alive连接模式下的非活动连接,仅需2.5M内存
?event-driven,aio,mmap,sendfile

基本功能:

?静态资源的web服务器
?http协议反向代理服务器
?pop3/imap4协议反向代理服务器
?FastCGI(LNMP),uWSGI(python)等协议
?模块化(非DSO),如zip,SSL模块

nginx的程序架构

web服务相关的功能:

虚拟主机(server)
支持 keep-alive 和管道连接( 共享TCP连接发起并发的HTTP请求)
访问日志(支持基于日志缓冲提高其性能)
url rewrite
路径别名
基于IP及用户的访问控制
支持速率限制及并发数限制
重新配置和在线升级而无须中断客户的工作进程
Memcached 的 GET 接口

nginx组织结构 

web请求处理机制:

1、多进程方式:服务器每接收到一个客户端请求就有服务器的主进程生成一个子进程响应客户端,
直到用户关闭连接,这样的优势是处理速度快,子进程之间相互独立,但是如果访问过大会导致服务器资源
耗尽而无法提供请求。

2、多线程方式:与多进程方式类似,但是每收到一个客户端请求会有服务进程派生出一个
线程来个客户方进行交互,一个线程的开销远远小于一个进程,因此多线程方式在很大程度减轻了web服务器对系
统资源的要求,但是多线程也有自己的缺点,即当多个线程位于同一个进程内工作的时候,可以相互访问同样的内
存地址空间,所以他们相互影响,一旦主进程挂掉则所有子线程都不能工作了,IIS服务器使用了多线程的方式,需
要间隔一段时间就重启一次才能稳定。

nginx组织模型

Nginx是多进程组织模型,而且是一个由Master主进程和Worker工作进程组成。

主进程(master process)的功能:

读取Nginx 配置文件并验证其有效性和正确性
建立、绑定和关闭socket连接
按照配置生成、管理和结束工作进程
接受外界指令,比如重启、升级及退出服务器等指令
不中断服务,实现平滑升级,重启服务并应用新的配置
开启日志文件,获取文件描述符
不中断服务,实现平滑升级,升级失败进行回滚处理
编译和处理perl脚本

工作进程(woker process)的功能:

接受处理客户的请求
将请求以此送入各个功能模块进行处理
IO调用,获取响应数据
与后端服务器通信,接收后端服务器的处理结果
缓存数据,访问缓存索引,查询和调用缓存数据
发送请求结果,响应客户的请求
接收主程序指令,比如重启、升级和退出等

nginx的程序架构:

master/worker结构
1、一个master进程:
   负载加载和分析配置文件、管理worker进程、平滑升级2、一个或多个worker进程
   处理并响应用户请求3、缓存相关的进程:
  cache loader:载入缓存对象
  cache manager:管理缓存对象  

进程间通信:

工作进程是有主进程生成的,主进程使用fork()函数,在Nginx服务器启动过程中主进程根据配置文件决定启动工作进程的数量,然后建立一张全局的工作表用于存放当前未退出的所有的工作进程,主进程生成工作进程后会将新生成的工作进程加入到工作进程表中,

并建立一个单向的管道并将其传递给工作进程,该管道与普通的管道不同,它是由主进程指向工作进程的单项通道,包含了主进程想工作进程发出的指令、工作进程ID、工作进程在工作进程表中的索引和必要的文件描述符等信息。

主进程与外界通过信号机制进行通信,当接收到需要处理的信号时,它通过管道向相关的工作进程发送正确的指令,每个工作进程都有能力捕获管道中的可读事件,当管道中有可读事件的时候,工作进程就会从管道中读取并解析指令,然后采取相应的执行动作,这样就完成了主进程与工作进程的交互。

1、工作进程之间的通信原理基本上和主进程与工作进程之间的通信是一样的,只要工作进程之间能够取得彼此的信息,建立管道即可通信,但是由于工作进程之间是完全隔离的,因此一个进程想要直到另外一个进程的状态信息就只能通过主进程来设置了。2、为了实现工作进程之间的交互,主进程在生成工作进程只之后,在工作进程表中进行遍历,将该新进程的ID以及针对该进程建立的管道句柄传递给工作进程中的其他进程,为工作进程之间的通信做准备,当工作进程1向工
作进程2发送指令的时候,首先在主进程给它的其他工作进程工作信息中找到2的进程ID,然后将正确的指令写入指向进程2的管道,工作进程2捕获到管道中的事件后,解析指令并进行相关操作,这样就完成了工作进程之间的通信。

nginx模块

 nginx高度模块化,但其模块早期不支持DSO机制;1.9.11版本支持动态装载和卸载。

 模块分类:

?核心模块:core module
?标准模块:
  •HTTP 模块: ngx_http_*
     HTTP Core modules 默认功能
     HTTP Optional modules 需编译时指定
  •Mail 模块 ngx_mail_*
  •Stream 模块 ngx_stream_*
第三方模块

 

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

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

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

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

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

nginx的功用

1、静态的web资源服务器

 html,图片,js,css,txt等静态资源

?2、结合FastCGI/uWSGI/SCGI等协议反向代理动态资源请求

?3、http/https协议的反向代理

?4、imap4/pop3协议的反向代理

?5、tcp/udp协议的请求转发(反向代理)

总结:前三个功用是nginx的最实用特性。

nginx的安装

官方yum源:

http://nginx.org/packages/centos/7/x86_64/

Fedora-EPEL源:

https://mirrors.aliyun.com/epel/7/x86_64/

一、官网最新yum源安装

打开nginx官网网站:http://nginx.org

1、选择download并选择第二步骤位置,进去之后有稳定版本的yum源仓库。

2、选择yum源稳定版本进行复制,并在linux系统中进行创建最新的yum源仓库。

3、创建yum源仓库,最后直接安装nginx即可:yum install nginx

[[email protected]~]#vim /etc/yum.repos.d/nginx.repo
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

 二、elpl源yum仓库安装 

[[email protected]~]#yum install nginx

三、源码编译安装

1、在官网进行下载源码包,并解压。

 官网地址:  https://nginx.org/en/download.html

[[email protected]~]#cd /usr/local/src
[[email protected]]#wget http://nginx.org/download/nginx-1.16.1.tar.gz
[[email protected]]#tar vfx nginx-1.16.1.tar.gz 

  2、安装依赖的包  

[[email protected]]#yum install gcc pcre-devel openssl-devel zlib-devel -y

  3、创建用户账号

[[email protected]]#useradd -r -s /sbin/nologin  nginx

  4、切换到解压后的源码包目录下,开始编译

[[email protected]]#cd nginx-1.16.1/

./configure --prefix=/apps/nginx --user=nginx --group=nginx --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_stub_status_module --with-http_gzip_static_module --with-pcre --with-stream --with-stream_ssl_module --with-stream_realip_module

  5、make:编译步骤,根据Makefile文件生成相应的模块,make install: 创建目录,并将生成的模块和文件复制到相应的目录。

[[email protected]]#make -j 4 && make install

  6、编译完成之后,可以创建一个nginx软连接,并启动nginx服务。

[[email protected]]#ln -s  /apps/nginx/sbin/nginx  /usr/sbin
[[email protected]]#ll /usr/sbin/nginx
lrwxrwxrwx 1 root root 22 Dec 11 16:04 /usr/sbin/nginx -> /apps/nginx/sbin/nginx
[[email protected]]#nginx   启动nginx服务
[[email protected]]#ss -nlt
State       Recv-Q Send-Q                           Local Address:Port                                          Peer Address:Port
LISTEN      0      128                                          *:111                                                      *:*
LISTEN      0      128                                          *:80                                                       *:*
LISTEN      0      128                                          *:6000                                                     *:*
LISTEN      0      128                                          *:22                                                       *:*
LISTEN      0      128                                  127.0.0.1:631                                                      *:*
LISTEN      0      100                                  127.0.0.1:25                                                       *:*

 7、测试:停止nginx服务命令

[[email protected]]#nginx -s stop

 8、将nginx设置为开机启动。

[[email protected]]#vim /etc/rc.d/rc.local 写入到默认的本地启动服务位置
/usr/sbin/nginx   将nginx服务的路径写上
[[email protected]]#chmod +x /etc/rc.d/rc.local  加上执行权限

显示此页面之后,说明nginx编译成功!

  

 

 

  


 

 

原文地址:https://www.cnblogs.com/struggle-1216/p/12023029.html

时间: 2024-11-06 03:40:58

nginx编译安装和功能介绍的相关文章

Linux下nginx编译安装教程和编译参数详解

这篇文章主要介绍了Linux下nginx编译安装教程和编译参数详解,需要的朋友可以参考下 一.必要软件准备1.安装pcre 为了支持rewrite功能,我们需要安装pcre 复制代码代码如下: # yum install pcre* //如过你已经装了,请跳过这一步 2.安装openssl 需要ssl的支持,如果不需要ssl支持,请跳过这一步 复制代码代码如下: # yum install openssl* 3.gzip 类库安装 复制代码代码如下: yum install zlib zlib-

使用本脚本可以自动批量完成中间节点环境的部署工作,包括:Nginx编译安装、添加程序管理脚本、设置开机启动、反向代理配置、证书分发、添加iptables规则等

使用本脚本可以自动批量完成中间节点环境的部署工作,包括:Nginx编译安装.添加程序管理脚本.设置开机启动.反向代理配置.证书分发.添加iptables规则等.脚本支持自定义nginx安装版本.设置编译模块.配置监听端口等. 1. Nginx Role规则说明 本脚本用于中间节点(Nginx反向代理)环境的自动化配置,主要内容包括: 安装基础依赖环境: 创建nginx启动用户(支持自定义用户): 下载nginx安装文件(可自定义nginx版本): 解压安装文件: 执行编译安装(可自定义编译参数和

Nginx编译安装,启动,停止,升级。

1.简单介绍下Nginx Nginx是一款轻量级的web服务器和反向代理服务器,它使用了epoll的I/O模型,也就是事件触发I/O模型,减少了进程的生成切换所消耗的系统资源(CPU的压力减少,内存的占用也会减少),可以达到很高的并发请求.它是一款开源软件,企业成本降低,它的使用配置也比较简单,同时支持Rewrite,作为反向代理的时候可以检查后端的Web服务器的健康状况,能够支持热部署. 2.Nginx安装,重启,升级,停止. 环境是Centos系统,通过www.nginx.org下载需要的源

NGINX编译安装后添加新模块的方法

刚忙完研发又有新的需求过来,测试服务器的nginx需要有HttpUpstreamRequestHashModule和HttpStubStatusModule:擦!安装软件环境时怎么不说清楚:妹的,悲剧. 测试服务器崩溃的是不是我安装的软件,天啊.赶紧搞吧!!! 环境:centos 6.4 64位 编译安装nginx 1:查看nginx版本和安装时间带的具体参数  /usr/local/nginx/sbin/nginx  -V 2:下载相应的版本的nginx源码包[nginx-1.5.11.tar

nginx 编译安装 及错误解决。

nginx 编译安装 Nginx 是一个很强大的高性能Web和反向代理服务器,它具有很多非常优越的特性:在连接高并发的情况下,Nginx是Apache服务器不错的替代品:Nginx在美国是做虚拟主机生意的老板们经常选择的软件平台之一.能够支持高达 50,000 个并发连接数的响应.相比apache nginx处理静态页面更加优秀迅速,配置也相当简洁明了. nginx相对于apache的优点: 轻量级,同样起web 服务,比apache 占用更少的内存及资源 抗并发,nginx 处理请求是异步非阻

Nginx编译安装Lua模块

Nginx编译安装Lua模块 一.安装Lua环境及相关库 官网网址:https://github.com/openresty/lua-nginx-module LuaJIT ` wget http://luajit.org/download/LuaJIT-2.0.2.tar.gz make install PREFIX=/usr/local/LuaJIT export LUAJIT_LIB=/usr/local/LuaJIT/lib export LUAJIT_INC=/usr/local/Lu

Nginx编译安装及编译参数讲解

实验环境说明:操作系统:Centos 7 64位Nginx版本:Nginx 1.12.2 编译安装前的准备:安装Nginx编译安装需要依赖的一些包yum install gcc gcc-c++ automake pcre pcre-devel zlib zlib-devel open openssl-devel -y #Nginx的编译安装及编译参数详解 Nginx的编译参数讲解--prefix=PATH set installation prefix #设置安装路径--sbin-path=PA

Centos7.x 编译安装全功能的Nginx

说明 根据此文档进行编译安装 Nginx,可以将Nginx默认的功能全部安装上,读者也可以自己的根据实际情况删减需要编译的模块. 支持的特色功能如下: 支持 TLSv1.3 - openssl 从 1.1.1 版本起支持最终版的TLSv1.3标准协议,详情参见:TLS1.3 支持 HTTP2 - Nginx 从 1.9.5 版本起支持http2,详情参见:Module ngx_http_v2_module 支持 Lua语法 - 详情参见:lua-nginx-module 安装 Nginx 官方资

nginx编译安装WEB站点内容过滤功能模块(with-http_sub_module)

最近有个需求:需要过滤替换掉网站上部分内容,查了下资料NGINX自带过滤功能模块,于是实践了下,具体操作如下:虽然是NGINX自带了with-http_sub_module模块,但是需要编译安装NGINX,并指定选项才可以正常使用.需要编译安装NGINX(with-http_sub_module): ./configure \--prefix=/application/nginx-1.6.3 \--user=nginx \--group=nginx \--with-http_ssl_module