一、基本了解
nginx简介:
- nginx是一款轻量级的Web服务器、反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like协议下发行。
- nginx由俄罗斯的程序设计师Igor Sysoev所开发,最初供俄国大型的入口网站及搜寻引擎Rambler使用。
- nginx第一个公开版本0.1.0发布于2004年10月4日。其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。2011年6月1日,nginx 1.0.4发布。
- nginx的特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。
1.1 特性优点
nginx特性:
- 在高连接并发的情况下,nginx是Apache服务器不错的替代品,能够支持高达50000个并发连接数的响应。
- 使用epoll and kqueue作为开发模型。
- nginx作为负载均衡服务器:nginx既可在内部直接支持和PHP程序对外进行服务,也可支持作为HTTP代理服务器对外进行服务。
- nginx采用C进行编写,不论系统资源开销还是CPU使用效率都比Perlbal要好很多
nginx优点:
- 高并发连接:官方测试能够支撑5万并发连接,在实际生产环境中跑到2-3万并发连接数。
- 内存消耗少:在3万并发连接下,开启的10个nginx进程才消耗150M内存(15M*10=150M)。
- 配置文件非常简单:风格跟程序一样通俗易懂。
- 成本低廉:nginx为开源软件,可以免费使用。而购买F5 BIG-IP、NetScaler等硬件负载均衡交换机则需要十多万至几十万人民币。
- 支持Rewrite重写规则:能够根据域名、URL的不同,将HTTP请求分到不同的后端服务器群组。
- 内置的健康检查功能:如果Nginx Proxy后端的某台Web服务器宕机了,不会影响前端访问。
- 节省带宽:支持GZIP压缩,可以添加浏览器本地缓存的Header头。
- 稳定性高:用于反向代理,宕机的概率微乎其微。
- 模块化设计:模块可以动态编译。
- 外围支持好:文档全,二次开发和模块较多。
- 支持热部署:可以不停机重载配置文件。
- 支持事件驱动、AIO(AsyncIO,异步IO)、mmap(Memory Map,内存映射)等性能优化
1.2 功能应用
nginx基本功能:
- 静态资源的web服务器,能缓存打开的文件描述符。
- http、smtp、pop3协议的反向代理服务器。
- 缓存加速、负载均衡。
- 支持FastCGI(fpm,LNMP),uWSGI(Python)等。
- 模块化(非DSO机制),过滤器zip、SSI及图像的大小调整。
- 支持SSL。
nginx扩展功能:
- 基于名称和IP的虚拟主机。
- 支持keepalive长连接。
- 支持平滑升级。
- 定制访问日志、支持使用日志缓冲区提高日志存储性能。
- 支持URL重写。
- 支持路径别名。
- 支持基于IP及用户的访问控制。
- 支持速率限制,支持并发数限制。
nginx应用类别:
- 使用nginx结合FastCGI运行PHP、JSP、Perl等程序。
- 使用nginx作反向代理、负载均衡、规则过滤。
- 使用nginx运行静态HTML网页、图片。
- nginx与其他新技术的结合应用。
1.3 工作模块分类
基本了解:
- nginx由内核和模块组成。内核的设计非常微小和简洁,完成的工作也非常简单,仅仅通过查找配置文件将客户端请求映射到一个location block,而在这个location中所配置的每个指令将会启动不同的模块去完成相应的工作。
- location是nginx配置文件中的一个参数,指定网页访问的根地址,location参数后面指定要访问的网页文件路径。
- nginx的模块从结构上分为核心模块、基础模块和第三方模块
模块分类:
- 核心模块:HTTP模块(访问网站)、EVENT模块(记录事件)、MAIL模块(发送邮件)等。
- 基本模块:HTTP Access模块(访问)、HTTP FastCGI模块(lnmp)、HTTP Proxy模块(反向代理)、HTTP Rewrite模块(重定向URL)。
- 第三方模块:HTTP Upstream模块、Request Hash模块、Notice模块和HTTP Access Key模块。
注意事项:
- 基本模块在编译时默认是开启状态,不能被禁用。
- 基本模块包括:
- 核心模块(提供基本功能和指令),常见核心模块指令大部分是放置在配置文件的顶部,需要顶行写,不能有空格和括号包含关系。
- 事件模块(Nginx内配置网络使用的能力),常见的events(事件)模块指令,大部分是放置在配置文件的顶部。
- 配置模块(提供包含机制),指主配置文件中可以通过引用其他路径下的配置文件参数实现功能,可以简化配置文件,方便阅读。
功能模块分类 | 作用 |
---|---|
Proxies(代理器模块) | 就是nginx的HTTP Upstream之类的模块,主要与后端服务比如fastcgi等操作交互,实现服务代理和负载均衡等功能。 |
Handlers(处理器模块) | 此类模块直接处理请求,并进行输出内容和修改headers信息等操作。handlers处理器模块一般只能有一个。 |
Filters(过滤器模块) | 此类模块主要对其他处理器模块输出的内容进行修改操作,最后由nginx输出。 |
1.4 模块配置方法
- 官方核心模块配置文档
1.如下图。这个核心模块参数可以配置在配置文件中的events中的括号里。
2.如下图。这个配置参数只能单独写一行,且顶行写,不能存在任何一个括号里。
3.如下图。这个配置参数可以配置在main, http, mail, stream, server, location任意位置。
- main:对本机所有网站生效。
- http:对所有server网站生效。
- server:对某一个网站生效。
- location:对某一个网站中的某一个访问页面生效。
二、工作原理
基本了解:
- nginx的模块直接被编译进nginx,属于静态编译。若要使用其他模块功能时,再添加模块编译,属于动态编译。
- 启动nginx后,nginx的模块被自动加载,与Apache不一样,首先将模块编译为一个so文件,然后在配置文件中指定是否进行加载。
- 在解析配置文件时,nginx的每个模块都有可能去处理某个请求,但是同一个处理请求只能由一个模块来完成。
nginx进程架构:
- 启动nginx时,会启动一个Master进程,这个进程不处理任何客户端的请求,主要用来产生worker线程。
- 每个worker线程下有多个工作模块,根据不同的客户端请求,各个工作模块分别对应处理一个请求。
- 当客户端请求web网站时,实际上是请求master进程产生的worker线程中的工作模块。
HTTP请求和响应的过程:
- 客户端发出请求,经过负载均衡高可用代理服务器后,到达某一台nginx服务器。
- nginx程序收到请求后,选择一个处理器模块进行处理,再通过过滤器模块生成请求内容,再继续宁内容处理。
- 最后将处理结果发送给客户端。
WEB服务请求步骤:
- 客户都安访问网站url,比如访问的是80端口,就需要建立tcp连接进行三次握手。
- 建立连接后,nginx服务端收到客户都安请求,开始调用处理器模块处理请求,根据客户端的请求去寻找资源。
- 找到资源后,就开始输出结果,建立响应报文,最后发送给客户端。
- 最后,nginx服务端记录整个过程的日志。
三、安装与配置
- 下载地址
1.创建系统用户nginx。
useradd -r -M -s /sbin/nologin nginx
2.安装依赖包。
yum -y install pcre-devel openssl openssl-devel gd-devel gcc gcc-c++ make
yum -y groups mark install 'Development Tools'
3.创建日志存放目录。
mkdir -p /var/log/nginx
chown -R nginx.nginx /var/log/nginx
4.下载nginx安装包,,解压,编译安装。
wget http://nginx.org/download/nginx-1.24.0.tar.gz
tar zxf nginx-1.24.0.tar.gz
cd nginx-1.24.0
//编译模块。
./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-debug \
--with-http_ssl_module \
--with-http_realip_module \
--with-http_image_filter_module \
--with-http_gunzip_module \
--with-http_gzip_static_module \
--with-http_stub_status_module \
--http-log-path=/var/log/nginx/access.log \
--error-log-path=/var/log/nginx/error.log
//安装。
make -j $(nproc) && make install
5.配置环境变量,启动nginx服务。
echo 'export PATH=/usr/local/nginx/sbin:$PATH' > /etc/profile.d/nginx.sh
source /etc/profile.d/nginx.sh
//启动。
nginx
6.访问web网页。
四、常用命令
参数 | 释义 |
---|---|
-t | 检查配置文件语法 |
-v | 输出nginx的版本 |
-c | 指定配置文件的路径,启动nginx时可以指定其他配置文件。 |
-s | 发送服务控制信号,可选值有stop、quit、reopen、reload。 |
-V | 编译时使用的参数 |
1.检查使用的配置文件语法是否正确。
文章来源:https://www.toymoban.com/news/detail-573258.html
2.查看nginx已编译安装的模块。若要继续添加模块,则需要把已安装的模块一起写进去编译。
3.重启nginx服务,一般都是先停止,再重新启动。
4.重新读取配置文件。文章来源地址https://www.toymoban.com/news/detail-573258.html
nginx -s reload
到了这里,关于nginx基础1——工作原理、安装配置、命令参数的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!