首页 > 编程笔记

Nginx下载和安装教程

Nginx 是一款开放源代码的高性能 HTTP 服务器和反向代理 Web 服务器,同时也是一个邮件代理服务,最早开发这个产品的目的之一是作为邮件代理服务器。Nginx 采用最新的网络 I/O 模型,支持高达 50000 个并发连接。因此在出现连接高并发的情况时,Nginx 可以代替 Apache 服务。

Nginx 不仅可以在内部直接支持 Rails 和 PHP 程序对外进行服务,而且可以支持作为 HTTP 服务器对外进行服务。Nginx 采用 C 进行编写,从而使系统资源的利用和 CPU 的使用效率都有很大的提高。

另外,Nginx 的安装非常的简单,配置文件非常简洁,运行 Bug 较少。Nginx 启动迅速,并且几乎可以 24h 不间断运行,即使运行数个月也不需要重新启动,同时还能够在不间断服务的情况下进行软件版本的升级。

安装Nginx软件

1、安装PCRE

与 Apache HTTP Server 一样,这里使用源代码编译安装该软件。但是在编译安装之前,需要使用 yum 提前将所需的软件依赖包安装完成。

首先需要安装 pcre-devel 和 Zlib 软件包。nginx 的 http 模块使用 pcre 来解析正则表达式,所以需要在 Linux 上安装 pcre 库,pcre-devel 是使用 pcre 开发的一个二次开发库。pcre 库的安装命令如下:

[root@ bogon conf]# yum install -y pcre pcre-devel


安装完成如图 1 所示。

pcre安装完成
图 1 pcre安装完成

由于 zlib 提供了很多种压缩和解压缩的方式,nginx 使用 zlib 对 http 包的内容进行解压。zlib 库的安装命令如下:

[root@ bogon abcd]# yum install -y zlib zlib-devel

安装完成页面如图 2 所示。

zlib安装完成
图 2 zlib安装完成

2、安装nginx

1) 安装 nginx,可以使用 wget 命令直接下载 nginx-1.14.0.tar.gz,命令如下:

[root@ bogon abcd]# wget -c https://nginx.org/download/nginx-1.14.0.tar.gz

下载完成页面如图 3 所示。

nginx-1.14.0.tar.gz下载完成
图 3 nginx-1.14.0.tar.gz下载完成

2) 对 nginx-1.14.0.tar.gz 进行解压并切换到 nginx 目录,命令如下:

[root@ bogon conf]# tar -zxvf nginx-1.14.0.tar.gz
[root@bogon abcd]# cd nginx-1.14.0

解压过程如图 4 所示。

nginx-1.14.0.tar.gz的解压过程
图 4 nginx-1.14.0.tar.gz的解压过程

3) 使用 nginx 的默认配置,命令如下:

[root@bogon nginx-1.14.0]# ./configure

配置的部分结果如图 5 所示。

使用nginx进行配置
图 5 使用nginx进行配置

4) 进行编译安装。命令如下:

[root@bogon nginx-1.14.0]# make
[root@bogon nginx-1.14.0]# make install


5) 查找安装路径,命令如下:

[root@bogon nginx-1.14.0]# whereis nginx

执行 whereis 命令之后,可以看到安装路径为 /usr/local/nginx,如图 6 所示。

安装路径
图 6 安装路径

配置文件解析

Nginx 默认的配置文件为 /usr/local/nginx/conf/nginx.conf,配置文件主要包括全局、event、http、server设置。其中 event 主要用于定义 Nginx 的工作模式;http 提供了 Web 的功能;server 主要用于设置虚拟主机,但 server 必须在 http 的内部,并且一个配置文件中也可以有多个 server。

Nginx 的主配置文件 nginx.conf 是一个纯文本类型的文件,整个文件是以区块的形式组织的,每个区块以一对花括号“{}”来表示开始与结束。

使用 cat 命令打开 /usr/local/nginx/conf/nginx.conf 配置文件,命令如下:

[root@bogon abcd]# cat /usr/local/nginx/conf/nginx.conf

Nginx 的配置文件内容有以下几个方面:
1) CoreModule 模块和 events 时间模块,内容解析如图 7 所示。

CoreModule模块和events时间模块
图 7 CoreModule模块和events时间模块

2) http 模块。设定 http 服务器,利用 http 的反向代理功能提供负载均衡支持。http 模块解析 1 如图 8 所示。

http模块解析1
图 8 http模块解析1

http 模块解析 2 如图 9 所示。

http 模块解析2
图 9 http 模块解析2

http 模块解析 3 如图 10 所示。

http模块解析3
图 10 http模块解析3

http 模块解析 4 如图 11 所示。

http模块解析4
图 11 http模块解析4

http 模块解析 5 如图 12 所示。

http模块解析5
图 12 http模块解析5

HTTP响应状态码

当通过浏览器访问站点页面时,首先发送页面请求给服务器,然后服务器会根据请求内容做出回应。如果没有问题,服务器会返回客户端成功状态码,同时将相应的页面传送给客户端浏览器;当服务器出现故障时,服务器通常会发送客户端错误状态码,并根据错误状态码向客户端浏览器发送错误页面。

常见的状态码及含义如表 13 所示。

表 13 常见的状态码及含义
状态码 含 义
100 请求已接收,客户端可以继续发送请求
101 Switching Protocols服务器根据客户端的请求切换协议
200 正常
201 服务器已经创建文档
202 已接受请求,但处理还没有完成
203 文档正常返回,但有些头部信息可能不正确
300 客户端请求的资源可以在多个位置找到
301 客户端请求的资源可以在其他位置找到
305 使用代理服务
400 请求语法错误
401 访问被拒绝
401.1 登录失败
403 资源不可用
403.6 IP地址被拒绝
403.9 用户数过多
404 无法找到指定资源
406 指定资源已找到,但MIME类型与客户端要求不兼容
407 要求进行代理身份验证
500 服务器内部错误
500.13 服务器忙碌
501 服务器不支持客户端请求的功能
502 网关错误
503 服务不可用
504 网关超时,服务器处于维护或者负载过高无法响应
505 服务器不支持客户端请求的HTTP版本

注意,1XX 表示提示错误;2XX 表示成功信息;3XX 表示重定向信息;4XX 表示客户端错误信息;5XX 表示服务器错误信息。

优秀文章