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.d
或systemd
方法。
要验证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大全 第四章 可大规模扩展的内容缓存
阅读 5039使用NGINX,您可以在任何可以放置NGINX服务器的地方缓存您的内容,从而有效地创建您自己的CDN。
NGINX大全 第十二章 高可用性部署模式
阅读 2285本章详细介绍了如何运行多个NGINX服务器以确保负载均衡层中的高可用性的技术。
NGINX大全 第十一章 容器/微服务
阅读 1867本章重点介绍如何构建NGINX和NGINX Plus容器镜像,使容器化环境更容易工作的特性,以及在Kubernetes和OpenShift上部署镜像。
NGINX大全 第六章 验证
阅读 2252NGINX能够验证客户端。通过NGINX验证客户端请求降低了工作量,并可以阻止未经身份验证的请求到达应用程序服务器。
NGINX大全 第七章 安全控制
阅读 2030在本章中,我们将通过许多不同的方式使用NGINX和NGINX Plus来保护您的Web应用程序。您可以将这些安全方法中的许多方法相互结合使用,以帮助加强安全性。
NGINX大全 第九章 复杂的媒体流
阅读 1972本章介绍使用MPEG-4或Flash视频格式的NGINX的流媒体。NGINX被广泛用于向大众分发和传输内容。NGINX支持行业标准格式和流技术,本章将对其进行介绍。
NGINX大全 第二章 高性能负载平衡
阅读 2223我们需要一个与基础架构一样动态的负载平衡解决方案。 NGINX以多种方式满足了这一需求,例如HTTP,TCP和UDP负载平衡,我们将在本章中介绍。
NGINX大全 第十五章 性能调优
阅读 3522本章还介绍了连接调优,以保持连接对客户端和上游服务器的开放性,并通过调整操作系统来提供更多连接。