NGINX大全 第一章 基础

NGINX大全 第一章 基础

第一章 基础

1.0 介绍

要开始使用NGINX Open Source或NGINX Plus,首先需要将其安装在系统上并学习一些基础知识。 在本章中,您将学习如何安装主要配置文件所在的NGINX以及管理命令。 您还将学习如何验证安装并向默认服务器发出请求。

1.1 在Debian/Ubuntu上安装

问题

您需要在Debian或Ubuntu机器上安装NGINX Open Source。

解决方案

创建一个名为/etc/apt/sources.list.d/nginx.list的文件,其中包含以下内容:

deb http://nginx.org/packages/mainline/OS/ CODENAME nginx
deb-src http://nginx.org/packages/mainline/OS/ CODENAME nginx

修改文件,用ubuntu或debian替换URL末尾的OS,具体取决于您的发行版。 将CODENAME替换为您的分发代码名称; 对debian来说,是jessie或stretch,而对ubuntu来说,是trusty,xenial,artful或bionic。 然后,运行以下命令:

wget http://nginx.org/keys/nginx_signing.key
apt-key add nginx_signing.key
apt-get update
apt-get install -y nginx
/etc/init.d/nginx start

讨论

您刚刚创建的文件指示apt包管理系统使用官方的NGINX包存储库。 接下来的命令下载NGINX GPG包签名密钥并将其导入apt。 提供的apt签名密钥使apt系统能够验证来自存储库的包。 apt-get update命令指示apt系统从其已知的存储库刷新其包列表。 刷新包列表后,您可以从官方的NGINX存储库安装NGINX Open Source。 安装后,最后一个命令启动NGINX。

1.2 在RedHat/CentOS上安装

问题

您需要在RedHat或CentOS上安装NGINX Open Source。

解决方案

创建一个名为/etc/yum.repos.d/nginx.repo的文件,其中包含以下内容:

[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/mainline/OS/OSRELEASE/$basearch/
gpgcheck=0
enabled=1

修改文件,将URL末尾的OS替换为rhel或centos,具体取决于您的发行版。 对于版本6.x或7.x,分别用6或7替换OSRELEASE。 然后,运行以下命令:

yum -y install nginx
systemctl enable nginx
systemctl start nginx
firewall-cmd --permanent --zone=public --add-port=80/tcp
firewall-cmd --reload

讨论

您刚为此解决方案创建的文件指示yum软件包管理系统使用官方的NGINX开源软件包存储库。 接下来的命令从官方存储库安装NGINX Open Source,指示systemd在启动时启用NGINX,并告诉它现在启动它。 防火墙命令为TCP协议打开端口80,这是HTTP的默认端口。 最后一个命令重新加载防火墙以提交更改。

1.3 安装NGINX Plus

问题

解决方案

没钱你装个锤子的NGINX Plus

讨论

没啥好讨论的,好好撸码赚钱吧

1.4 验证你的安装

问题

您想要验证NGINX的安装并检查版本。

解决方案

您可以验证是否已安装NGINX并使用以下命令检查其版本:

$ nginx -v
nginx version: nginx/1.15.3

如此示例所示,命令的响应会显示版本。

您可以使用以下命令确认NGINX正在运行:

$ ps -ef | grep nginx
root 1738 1 0 19:54 ? 00:00:00 nginx: master process
nginx 1739 1738 0 19:54 ? 00:00:00 nginx: worker process

ps命令列出正在运行的进程。将其通过管道传给grep,您可以在输出中搜索特定单词。 此示例使用grep搜索nginx。 结果显示了两个正在运行的进程,一个master和一个worker。 如果NGINX正在运行,您将始终看到一个master进程和一个或多个worker进程。 有关启动NGINX的说明,请参阅下一节。 要了解如何将NGINX作为守护程序启动,请使用init.dsystemd方法。

要验证NGINX是否正确地返回请求,请使用浏览器向您的计算机发出请求或使用curl

$ curl localhost

您将看到默认的NGINX Welcome HTML站点。

讨论

nginx命令允许您与NGINX二进制文件交互以检查版本,列出已安装的模块,测试配置以及向主进程发送信号。 NGINX必须运行起来才能处理请求。 ps命令是确定NGINX是作为守护程序运行还是作为前台运行的万无一失的方法。 默认情况下,NGINX提供的默认配置在端口80上运行静态站点HTTP服务器。您可以在本地主机上通过向计算机发出带有主机IP和主机名的HTTP请求来测试此默认站点。

1.5 核心文件,命令和目录

问题

您需要了解重要的NGINX目录和命令。

解决方案

NGINX文件和目录

/etc/nginx/

/etc/nginx/目录是NGINX服务器的默认配置根目录。 在此目录中,您将找到指示NGINX如何运作的配置文件。

/etc/nginx/nginx.conf

/etc/nginx/nginx.conf文件是NGINX服务使用的默认配置入口点。此配置文件为工作进程,调优,日志记录,加载动态模块以及引用其他NGINX配置文件等内容做全局设置。在默认配置中,/etc/nginx/nginx.conf文件包含顶级的http块,其中包含下一个目录中的所有配置文件。

/etc/nginx/conf.d/

/etc/nginx/conf.d/目录包含默认的HTTP服务器配置文件。此目录中以.conf结尾的文件包含在/etc/nginx/nginx.conf文件中的顶级的http块中。实践中最好是利用include语句并以这种方式组织配置,以使配置文件保持简洁。在某些软件包存储库中,此文件夹名为sites-enabled,配置文件链接自名为site-available的文件夹;不推荐使用此约定。

/var/log/nginx/

/var/log/nginx/目录是NGINX的默认日志位置。在这个目录中,您将找到access.log文件和error.log文件。访问日志(access.log)包含NGINX服务的每个请求的条目。如果启用了调试模块,则错误日志文件(error.log)包含错误事件和调试信息。

NGINX命令

nginx -h 显示NGINX帮助菜单。 nginx -v 显示NGINX版本。 nginx -V 显示NGINX版本、构建信息和配置参数,这些参数显示了内建到NGINX二进制文件中的模块。 nginx -t 测试NGINX配置。 nginx -T 测试NGINX配置并将验证后的配置打印到屏幕上。这个命令在寻求帮助时很有用。 nginx -s signal -s标志向NGINX主进程发送signal(信号)。 您可以发送stop(停止),quit(退出),reload(重新加载)和reopen(重新打开)等信号。 停止信号立即中断NGINX过程。 退出信号在完成处理进行中的请求后停止NGINX进程。 重载信号重新加载配置。 重新打开信号指示NGINX重新打开日志文件。

讨论

通过了解这些关键文件,目录和命令,您就可以开始使用NGINX了。 有了这些知识,您可以使用nginx -t命令更改默认配置文件并测试更改。 如果测试成功,您还知道如何使用nginx -s reload命令指示NGINX重新加载其配置。

1.6 提供静态内容

问题

您需要使用NGINX提供静态内容。

解决方案

使用以下NGINX配置示例覆盖位于/etc/nginx/conf.d/default.conf中的默认HTTP服务器配置:

server {
    listen 80 default_server;
    server_name www.example.com;
    location / {
        root /usr/share/nginx/html;
        # alias /usr/share/nginx/html;
        index index.html index.htm;
    }
}

讨论

此配置在端口80上通过HTTP协议提供目录/usr/share/nginx/html/中的静态文件。此配置中的第一行定义了一个新的server块。这定义了一个新的context让NGINX来监听。第二行指示NGINX侦听端口80,default_server参数指示NGINX使用此server作为端口80的默认context。server_name指令定义哪些主机名或名字的请求应当被定向到此server。如果配置未将此context定义为default_server,则仅当HTTP请求的主机header与提供给server_name指令的值匹配时,NGINX才会将请求定向到此server。

location块根据URL中的路径定义配置。 路径,或者说domain之后的URL部分,被称为URI。 NGINX会把请求到location块的URI进行最佳匹配。 该示例使用/来匹配所有请求。 root指令显示NGINX为给定context提供内容时在哪里查找静态文件。 在查找请求的文件时,请求的URI将被附加到root指令的值后面。 如果我们为location指令提供了一个URI前缀,那么这将包含在附加路径中,除非我们使用alias目录而不是root的。 最后,如果URI中没有提供进一步的路径,则index指令为NGINX提供默认文件或要检查的文件列表。

1.7 优雅的重新加载

问题

您需要在不丢弃数据包的同时重新加载配置。

解决方案

使用NGINX的reload方法可以在不停止服务器的情况下实现配置的优雅的重新加载:

$ nginx -s reload

此示例使用NGINX二进制文件向主进程发送信号来重新加载NGINX系统。

讨论

在不停止服务器的情况下重新加载NGINX配置,可以在不丢弃任何数据包的情况下即时更改配置。 在高正常运行时间的动态环境中,您需要在某个时刻更改负载平衡配置。 NGINX允许您在保持负载均衡器在线的同时执行此操作。 此功能支持无数种可能性,例如在实时环境中重新运行配置管理,或构建应用程序和群集感知模块来动态地配置和重新加载NGINX以满足环境需求。

猜你喜欢
NGINX大全 第二章 高性能负载平衡
阅读 1312

我们需要一个与基础架构一样动态的负载平衡解决方案。 NGINX以多种方式满足了这一需求,例如HTTP,TCP和UDP负载平衡,我们将在本章中介绍。

NGINX大全 第十一章 容器/微服务
阅读 1228

本章重点介绍如何构建NGINX和NGINX Plus容器镜像,使容器化环境更容易工作的特性,以及在Kubernetes和OpenShift上部署镜像。

NGINX大全 第十四章 使用访问日志,错误日志和请求跟踪进行调试和故障排除
阅读 2641

在本章中,我们将讨论访问和错误日志,通过Syslog协议进行流传输以及使用NGINX生成的请求标识符来端到端地跟踪请求。

NGINX大全 第八章 HTTP/2
阅读 1854

本章详细介绍了在NGINX中启用HTTP/2以及配置gRPC和HTTP/2服务器推送支持的基本配置。

NGINX大全 第六章 验证
阅读 1388

NGINX能够验证客户端。通过NGINX验证客户端请求降低了工作量,并可以阻止未经身份验证的请求到达应用程序服务器。

NGINX大全 第七章 安全控制
阅读 1162

在本章中,我们将通过许多不同的方式使用NGINX和NGINX Plus来保护您的Web应用程序。您可以将这些安全方法中的许多方法相互结合使用,以帮助加强安全性。

NGINX大全 第九章 复杂的媒体流
阅读 1208

本章介绍使用MPEG-4或Flash视频格式的NGINX的流媒体。NGINX被广泛用于向大众分发和传输内容。NGINX支持行业标准格式和流技术,本章将对其进行介绍。

NGINX大全 第十六章 实用操作提示和结论
阅读 2137

在本章中,我将介绍如何确保配置文件简洁明了以及调试配置文件。