【NGINX--1】基础知识

1、在 Debian/Ubuntu 上安装 NGINX

在 Debian 或 Ubuntu 机器上安装 NGINX 开源版。

更新已配置源的软件包信息,并安装一些有助于配置官方 NGINX 软件包仓库的软件包:

bash 复制代码
apt-get update
apt install -y curl gnupg2 ca-certificates lsb-release debian-archive-keyring

下载并保存 NGINX 签名密钥:

bash 复制代码
curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor | tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null

使用 lsb_release 设置定义操作系统和版本名称的变量,然后创建一个 apt 源文件:

bash 复制代码
OS=$(lsb_release -is | tr '[:upper:]' '[:lower:]')
RELEASE=$(lsb_release -cs)
echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] http://nginx.org/packages/${OS} ${RELEASE} nginx" | tee /etc/apt/sources.list.d/nginx.list

再次更新软件包信息,然后安装 NGINX:

bash 复制代码
apt-get update
apt-get install -y nginx 
nginx

详解

此次提供的命令可指示高级打包工具(APT)软件包管理系统使用官方 NGINX 软件包仓库。NGINX GPG 软件包签名密钥已下载并保存至文件系统的某个位置,以供 APT 使用。为 APT 提供签名密钥有助于 APT 系统验证仓库中的软件包。lsb_release 命令用于自动确定操作系统和版本名称,用户可以在所有 Debian 或 Ubuntu 发布版本中使用这些指令。apt-get update 命令指示 APT 系统从其已知的仓库中刷新软件包列表,此后您便可以从官方 NGINX 仓库安装 NGINX 开源版。安装后,最后一个命令会启动NGINX。

2、在 RedHat/CentOS 上安装 NGINX

在 RedHat 或 CentOS 上安装 NGINX 开源版。

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

bash 复制代码
[nginx] 
name=nginx repo
baseurl=http://nginx.org/packages/OS/OSRELEASE/$basearch/ 
gpgcheck=0
enabled=1

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

bash 复制代码
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 开源版,指示 systemd 在启动时启用 NGINX,并告知它立即启动。防火墙命令为 TCP 协议打开端口 80,这是 HTTP 的默认端口。最后一个命令重新加载防火墙,以提交更改。

3、安装 NGINX Plus

安装 NGINX Plus。

请访问 http://cs.nginx.com/repo_setup。从下拉菜单中选择您要将 NGINX Plus 安装到哪个操作系统,然后按照说明进行操作。其安装说明与开源解决方案类似,但是您需要安装一个证书,以便对 NGINX Plus 仓库进行身份验证。
详解

NGINX 会及时更新这个仓库安装指南和 NGINX Plus 安装说明。这些说明因您的操作系统和版本而略有不同,但都有一个共同点:您必须从 NGINX 门户获取证书和密钥并提供给您的系统,以便对 NGINX Plus 仓库进行身份验证。

4、验证安装

验证 NGINX 是否安装成功并检查版本。

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

bash 复制代码
$ nginx -v
nginx version: nginx/1.21.3

如本例所示,响应显示了版本。

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

bash 复制代码
$ 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 进程。请注意,master 进程以 root 身份运行,因为 NGINX 只有使用最高权限才能正常运行。

要验证 NGINX 能否正确返回请求,请使用浏览器向您的机器发出请求或使用 curl。发送请求时,请使用机器的 IP 地址或主机名。如果安装在本地,您可以使用 localhost,如下所示:

bash 复制代码
curl localhost

您将看到 NGINX 欢迎页面默认的 HTML 站点。

5、关键文件、目录和命令

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

NGINX 文件和目录

bash 复制代码
/etc/nginx/
/etc/nginx/ 目录是 NGINX 服务器的默认配置根,您可以从中找到指示 NGINX 如何运行的配置文件。

/etc/nginx/nginx.conf
/etc/nginx/nginx.conf 文件是 NGINX 服务使用的默认配置入口点。此配置文件能够为 worker 进程、调优、日志记录、动态模块的加载以及对其他 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 文件。访问日志包含 NGINX 服务的每条请求的条目。如果启用了debug 模块,则错误日志文件包含错误事件和调试信息。

NGINX 命令

bash 复制代码
nginx -h
显示 NGINX 帮助菜单。

nginx -v
显示 NGINX 版本。

nginx -V
显示 NGINX 版本、build 信息和配置参数,这些参数显示了 NGINX 二进制文件中内置的模块。

nginx -t
测试 NGINX 配置。

nginx -T
测试 NGINX 配置并将验证后的配置打印到屏幕上。此命令在寻求支持时很有用。

nginx -s signal
-s 标记向 NGINX master 进程发送信号。您可以发送 stop、quit、reload 和reopen 等信号。stop 信号可立即停止 NGINX 进程。quit 信号会在完成当前正在处理的请求后停止 NGINX 进程。reload 信号可重新加载配置。reopen 信号指示NGINX 重新打开日志文件。

6、提供静态内容

使用 NGINX 提供静态内容。

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

bash 复制代码
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;
    }
}

详解

此配置通过 HTTP 在端口 80 上从目录 /usr/share/nginx/html/ 提供静态文件。第一行配置定义了一个新的 server 代码块,这为 NGINX 定义了一个需要侦听的新上下文。第二行指示 NGINX 侦听端口 80,default_server 参数指示 NGINX 使用此服务器作为端口 80 的默认上下文。listen 指令也可以使用一系列端口。server_name 指令定义了主机名或应定向到此服务器的请求的名称。如果配置没有将此上下文定义为 default_server,那么只有当 HTTP 主机请求头与提供给 server_name 指令的值相匹配时,NGINX 才会将请求定向到这台服务器。如果您还没有要使用的域名,则可以通过设置default_server 上下文省略 server_name 指令。

location 代码块根据 URL 中的路径定义配置。路径或域之后的部分 URL 被称为统一资源标识符(URI)。理想情况下,NGINX 会将请求的 URI 匹配到一个 location 代码块。示例使用了 / 匹配所有请求。root 指令向 NGINX 显示了为给定上下文提供内容时应在何处查找静态文件。在查找请求的文件时,请求的 URI 会附加到 root 指令的值。如果我们为 location 指令提供了 URI 前缀,那么除非我们使用 alias 指令(而非 root),否则该前缀将包含在附加路径中。location 指令能够匹配一系列广泛的表达式。有关更多信息,请访问下方"其他参考资料"中的链接。最后,index 指令为 NGINX 提供了一个默认文件或要检查的文件列表,以防 URI 中没有提供进一步的路径。

参考资料
NGINX HTTP location 指令文档

7、优雅重载

在保证不丢包的情况下重新加载配置。

通过使用 NGINX 的 reload 方法,您可以在不中止服务器的情况下有条不紊地重载配置:

bash 复制代码
nginx -s reload

此示例使用 NGINX 二进制文件向 master 进程发送信号,从而达到重载 NGINX 系统

的目的。

相关推荐
码农101号20 分钟前
Linux中shell编程表达式和数组讲解
linux·运维·服务器
powerfulzyh33 分钟前
非Root用户启动SSH服务经验小结
运维·ssh
云道轩41 分钟前
升级centos 7.9内核到 5.4.x
linux·运维·centos
爱学习的小道长1 小时前
Ubuntu Cursor升级成v1.0
linux·运维·ubuntu
EelBarb1 小时前
seafile:ubuntu搭建社区版seafile12.0
linux·运维·ubuntu
402 Payment Required1 小时前
serv00 ssh登录保活脚本-邮件通知版
运维·chrome·ssh
小柏ぁ1 小时前
calico/node is not ready: BIRD is not ready: BGP not established with xxx
运维·docker·kubernetes
Mintimate2 小时前
云服务器 Linux 手动 DD 安装第三方 Linux 发行版:原理与实战
linux·运维·服务器
RussellFans2 小时前
Linux 环境配置
linux·运维·服务器
高冷的肌肉码喽3 小时前
Linux-进程间的通信
linux·运维·服务器