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大全 第九章 复杂的媒体流
阅读 1035

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

NGINX大全 第十五章 性能调优
阅读 1654

本章还介绍了连接调优,以保持连接对客户端和上游服务器的开放性,并通过调整操作系统来提供更多连接。

NGINX大全 第十三章 高级活动监控
阅读 1286

本章详细介绍了NGINX Plus仪表板,NGINX Plus API和开源存根状态模块的功能。

NGINX大全 第二章 高性能负载平衡
阅读 1128

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

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

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

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

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

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

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

NGINX大全 第六章 验证
阅读 1215

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