Nginx完全指南--内容解析(二)(nginxe)
nanshan 2024-11-17 14:12 8 浏览 0 评论
实现高性能负载均衡的进阶实操指南
经典书籍《NGINX 完全指南》中文版全新再版
这本由 O'Reilly 出版的电子书涵盖了最新的 NGINX 操作指南和使用技巧,是 NGINX 学习及实操的必备指南。新版不仅扩充更新了已有章节,还添加了不少前沿的热门话题。
本书是由中文官方网站推荐,免费下载的电子书籍,大家有兴趣的可以到官方地址下载获取,或者私信我获取。
中文官方网站:https://www.nginx-cn.net/
第1章 基础知识
1、简介
无论是 NGINX 开源版还是 NGINX Plus,您都要先在系统上安装它们并学习一些基础知识。在本章中,您将学习如何安装 NGINX、主要配置文件位于何处以及管理命令是什么,还将了解如何验证您的安装并向默认服务器发出请求。
2、在 Debian/Ubuntu 上安装 NGINX
$ apt update
$ apt install -y curl gnupg2 ca-certificates lsb-release \
debian-archive-keyring
下载并保存 NGINX 签名密钥:
$ curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
| tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null
使用 lsb_release 设置定义操作系统和版本名称的变量,然后创建一个 apt 源文件:
$ 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:
$ apt update
$ apt install -y nginx
$ systemctl enable nginx
$ nginx
详解
本节提供的命令可指示高级打包工具(APT)软件包管理系统使用官方 NGINX 软件包仓库。NGINX GPG 软件包签名密钥被下载并保存至文件系统的某个位置,以供 APT使用。为 APT 提供签名密钥有助于 APT 系统验证仓库中的软件包。
3、通过 YUM 软件包管理器安装 NGINX
想要在 Red Hat Enterprise Linux(RHEL)、Oracle Linux、AlmaLinux、RockyLinux 或 CentOS 上安装 NGINX 开源版,可以通过YUM 软件包管理器安装。
创建一个名为 /etc/yum.repos.d/nginx.repo 的文件,其中包含以下内容:
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=0
enabled=1
详解
$releasever的值,当前系统的发行版本
$basearch的值,系统硬件架构
gpgcheck,是gpg签名是否开启的选项名称,1是开启,0是不开启
enabled=1,表示该仓库可用
修改文件,将 URL 中间的 OS 替换为 rhel 或 centos,具体取决于您的发行版本。然
后运行以下命令:
$ 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 的默认端口。最后一个命令重新加载防火墙,以提交更改。
4、安装 NGINX Plus
您想要安装 NGINX Plus,可以访问NGINX 文档。https://docs.nginx.com/nginx/admin-guide/installing-nginx/installing-nginx-plus/。选择您要将 NGINX Plus 安装到哪个操作系统,然后按照说明进行操作。其安装说明与开源解决方案类似,但是您需要获取证书和密钥,以便对 NGINXPlus 仓库进行身份验证。受篇幅限制,本书中未详细写到每个操作系统如果安装NGINX Plus操作步骤,大家可参考上面的地址进行安装。
详解
NGINX Plus是收费版,可在此地址申请30天试用https://www.nginx-cn.net/pricing/。也可咨询购买报价。
5、验证安装
您可以使用以下命令验证 NGINX 是否安装成功并检查其版本
$ nginx -v
您可以使用以下命令确认 NGINX 是否正在运行
$ ps -ef | grep nginx
ps 命令列出了正在运行的进程。通过将该命令导入到grep中,您可以在输出中搜索特定词。此示例使用 grep 搜索 nginx。结果显示有两个正在运行的进程:master 和worker。如果 NGINX 正在运行中,您将始终可以看到一个 master 以及一个或多个worker 进程。请注意,master 进程以 root 身份运行,因为默认情况下,NGINX 只有使用最高权限才能正常运行。有关启动 NGINX 的说明,请参阅下一实操指南。要了解如何将 NGINX 作为守护进程启动,请使用 init.d 或 systemd 方法。要验证 NGINX 能否正确返回请求,请使用浏览器向您的机器发出请求或使用 curl。发送请求时,请使用机器的 IP 地址或主机名。如果安装在本地,您可以使用 localhost,如下所示
$ curl localhost
您将看到 NGINX 欢迎页面默认的 HTML 站点.
详解
nginx 命令允许您与 NGINX 二进制文件交互,以便检查版本、列出已安装的模块、测试配置以及向 master 进程发送信号。NGINX 必须在运行时才能服务请求。ps 命令是一种确定 NGINX 是否正在运行(作为守护进程或是前台进程)的可靠方法。NGINX 默认提供的配置在端口 80 上运行静态站点 HTTP 服务器。为了测试这一默认站点,您可以使用 localhost 向机器发送 HTTP 请求,并应使用主机的 IP 地址和主机名。
6、关键文件、目录和命令
NGINX 文件和目录
/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 常用命令
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 重新打开日志文件。
详解
在了解这些关键文件、目录和命令后,您就可以准备开始使用 NGINX 了。您可以运用这些知识更改默认配置文件,并使用 nginx -t 命令测试您的更改。如果测试成功,您还将了解到如何使用 nginx -s reload 命令指示 NGINX 重新加载配置。
7、使用 include 简化配置
想要清理庞杂的配置文件,将配置按逻辑划分为模块化配置集可使用 include 指令来引用配置文件、目录或掩码:
http {
include conf.d/compression.conf;
include ssl_config/*.conf
}
include 指令中只包含一个参数,它可以是文件的路径或是与许多文件匹配的掩码。该指令在任何上下文中都有效。
详解
通过使用 include 语句,您可以保持 NGINX 配置清晰简洁。您可以对配置进行逻辑分组,以避免配置文件达到数百行。您可以创建模块化配置文件,然后将这些文件添加到配置中的多个位置,无需复制配置。
以 NGINX 大多数软件安装包中都提供的 fastcgi_param 配置文件为例。如果您是在单个 NGINX 上管理多台 FastCGI 虚拟服务器,则可以将此配置文件添加到需要这些FastCGI 参数的任何位置或上下文中,而无需复制此配置。另一个示例是安全套接字层(SSL)配置。如果您正在运行需要类似 SSL 配置的多台服务器,只需编写此配置一次,然后将其添加到所需位置即可。
通过对配置进行逻辑分组,您可确保配置简洁有序。只需编辑单个文件即可更改一组配置文件,无需在大型配置文件中的多个位置更改多组配置块。对于从业人员来说,最好将配置分组到不同文件中并使用 include 语句。
8、提供静态内容
使用以下 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;
}
}
详解
此配置通过 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 指令文档:http://nginx.org/en/docs/http/ngx_http_core_module.html#location
NGINX 请求处理:https://nginx.org/en/docs/http/request_processing.html
书末题署
《NGINX 完全指南》封面上的动物是欧亚猞猁(Lynx lynx),是最大的猞猁物种,分布范围广泛,从西欧延伸到中亚。猞猁的耳尖生有黑色耸立簇毛,两颊毛发浓密而粗糙。皮毛颜色从黄灰色到灰褐色,腹部为白色。这只猞猁通身布满黑斑,与南部地区的亚种相比,北部地区的亚种更灰白,斑点更少。
与其他猞猁物种不同,欧亚猞猁捕食较大的有蹄类动物,例如鹿、麋,甚至是驯养的绵羊。成年猞猁每天消耗两到五磅肉,可长达一周食用单一食物。欧亚猞猁在二十世纪中叶濒临灭绝,后来经过坚持不懈的保护,降级为无危物种。
O'Reilly 封面上的许多动物都濒临灭绝,但对世界意义重大。
封面插画由 Karen Montgomery 参考 Shaw 著作《Zoology(动物学)》中的黑白版画绘制而成。该系列由 Edie Freedman、Ellie Volckhausen 和 Karen Montgomery 共同设计。封面字体为微软雅黑系列字体,Neusa Next Std Bold 和 Arial 粗体。正文字体为微软雅黑和 Arial 字体,标题字体为微软雅黑粗体,Proxima Nova 粗体和 Arial 粗体,代码字体为 Dalton Maag's Ubuntu Mono。
相关推荐
- 服务器数据恢复—Raid5数据灾难不用愁,Raid5数据恢复原理了解下
-
Raid5数据恢复算法原理:分布式奇偶校验的独立磁盘结构(被称之为raid5)的数据恢复有一个“奇偶校验”的概念。可以简单的理解为二进制运算中的“异或运算”,通常使用的标识是xor。运算规则:若二者值...
- 服务器数据恢复—多次异常断电导致服务器raid不可用的数据恢复
-
服务器数据恢复环境&故障:由于机房多次断电导致一台服务器中raid阵列信息丢失。该阵列中存放的是文档,上层安装的是Windowsserver操作系统,没有配置ups。因为服务器异常断电重启后,rai...
- 服务器数据恢复-V7000存储更换磁盘数据同步失败的数据恢复案例
-
服务器数据恢复环境:P740+AIX+Sybase+V7000存储,存储阵列柜上共12块SAS机械硬盘(其中一块为热备盘)。服务器故障:存储阵列柜中有磁盘出现故障,工作人员发现后更换磁盘,新更换的磁盘...
- 「服务器数据恢复」重装系统导致XFS文件系统分区丢失的数据恢复
-
服务器数据恢复环境:DellPowerVault系列磁盘柜;用RAID卡创建的一组RAID5;分配一个LUN。服务器故障:在Linux系统层面对LUN进行分区,划分sdc1和sdc2两个分区。将sd...
- 服务器数据恢复-ESXi虚拟机被误删的数据恢复案例
-
服务器数据恢复环境:一台服务器安装的ESXi虚拟化系统,该虚拟化系统连接了多个LUN,其中一个LUN上运行了数台虚拟机,虚拟机安装WindowsServer操作系统。服务器故障&分析:管理员因误操作...
- 「服务器数据恢复」Raid5阵列两块硬盘亮黄灯掉线的数据恢复案例
-
服务器数据恢复环境:HPStorageWorks某型号存储;虚拟化平台为vmwareexsi;10块磁盘组成raid5(有1块热备盘)。服务器故障:raid5阵列中两块硬盘指示灯变黄掉线,无法读取...
- 服务器数据恢复—基于oracle数据库的SAP数据恢复案例
-
服务器存储数据恢复环境:某品牌服务器存储中有一组由6块SAS硬盘组建的RAID5阵列,其中有1块硬盘作为热备盘使用。上层划分若干lun,存放Oracle数据库数据。服务器存储故障&分析:该RAID5阵...
- 「服务器虚拟化数据恢复」Xen Server环境下数据库数据恢复案例
-
服务器虚拟化数据恢复环境:Dell某型号服务器;数块STAT硬盘通过raid卡组建的RAID10;XenServer服务器虚拟化系统;故障虚拟机操作系统:WindowsServer,部署Web服务...
- 服务器数据恢复—RAID故障导致oracle无法启动的数据恢复案例
-
服务器数据恢复环境:某品牌服务器中有一组由4块SAS磁盘做的RAID5磁盘阵列。该服务器操作系统为windowsserver,运行了一个单节点Oracle,数据存储为文件系统,无归档。该oracle...
- 服务器数据恢复—服务器磁盘阵列常见故障表现&解决方案
-
RAID(磁盘阵列)是一种将多块物理硬盘整合成一个虚拟存储的技术,raid模块相当于一个存储管理的中间层,上层接收并执行操作系统及文件系统的数据读写指令,下层管理数据在各个物理硬盘上的存储及读写。相对...
- 「服务器数据恢复」IBM某型号服务器RAID5磁盘阵列数据恢复案例
-
服务器数据恢复环境:IBM某型号服务器;5块SAS硬盘组成RAID5磁盘阵列;存储划分为1个LUN和3个分区:第一个分区存放windowsserver系统,第二个分区存放SQLServer数据库,...
- 服务器数据恢复—Zfs文件系统下误删除文件如何恢复数据?
-
服务器故障:一台zfs文件系统服务器,管理员误操作删除服务器上的数据。服务器数据恢复过程:1、将故障服务器所有磁盘编号后取出,硬件工程师检测所有硬盘后没有发现有磁盘存在硬件故障。以只读方式将全部磁盘做...
- 服务器数据恢复—Linux+raid5服务器数据恢复案例
-
服务器数据恢复环境:某品牌linux操作系统服务器,服务器中有4块SAS接口硬盘组建一组raid5阵列。服务器中存放的数据有数据库、办公文档、代码文件等。服务器故障&检测:服务器在运行过程中突然瘫痪,...
- 服务器数据恢复—Sql Server数据库数据恢复案例
-
服务器数据恢复环境:一台安装windowsserver操作系统的服务器。一组由8块硬盘组建的RAID5,划分LUN供这台服务器使用。在windows服务器内装有SqlServer数据库。存储空间LU...
- 服务器数据恢复—阿里云ECS网站服务器数据恢复案例
-
云服务器数据恢复环境:阿里云ECS网站服务器,linux操作系统+mysql数据库。云服务器故障:在执行数据库版本更新测试时,在生产库误执行了本来应该在测试库执行的sql脚本,导致生产库部分表被tru...
你 发表评论:
欢迎- 一周热门
-
-
爱折腾的特斯拉车主必看!手把手教你TESLAMATE的备份和恢复
-
如何在安装前及安装后修改黑群晖的Mac地址和Sn系列号
-
[常用工具] OpenCV_contrib库在windows下编译使用指南
-
WindowsServer2022|配置NTP服务器的命令
-
Ubuntu系统Daphne + Nginx + supervisor部署Django项目
-
WIN11 安装配置 linux 子系统 Ubuntu 图形界面 桌面系统
-
解决Linux终端中“-bash: nano: command not found”问题
-
NBA 2K25虚拟内存不足/爆内存/内存占用100% 一文速解
-
Linux 中的文件描述符是什么?(linux 打开文件表 文件描述符)
-
K3s禁用Service Load Balancer,解决获取浏览器IP不正确问题
-
- 最近发表
-
- 服务器数据恢复—Raid5数据灾难不用愁,Raid5数据恢复原理了解下
- 服务器数据恢复—多次异常断电导致服务器raid不可用的数据恢复
- 服务器数据恢复-V7000存储更换磁盘数据同步失败的数据恢复案例
- 「服务器数据恢复」重装系统导致XFS文件系统分区丢失的数据恢复
- 服务器数据恢复-ESXi虚拟机被误删的数据恢复案例
- 「服务器数据恢复」Raid5阵列两块硬盘亮黄灯掉线的数据恢复案例
- 服务器数据恢复—基于oracle数据库的SAP数据恢复案例
- 「服务器虚拟化数据恢复」Xen Server环境下数据库数据恢复案例
- 服务器数据恢复—RAID故障导致oracle无法启动的数据恢复案例
- 服务器数据恢复—服务器磁盘阵列常见故障表现&解决方案
- 标签列表
-
- linux 查询端口号 (58)
- docker映射容器目录到宿主机 (66)
- 杀端口 (60)
- yum更换阿里源 (62)
- internet explorer 增强的安全配置已启用 (65)
- linux自动挂载 (56)
- 禁用selinux (55)
- sysv-rc-conf (69)
- ubuntu防火墙状态查看 (64)
- windows server 2022激活密钥 (56)
- 无法与服务器建立安全连接是什么意思 (74)
- 443/80端口被占用怎么解决 (56)
- ping无法访问目标主机怎么解决 (58)
- fdatasync (59)
- 405 not allowed (56)
- 免备案虚拟主机zxhost (55)
- linux根据pid查看进程 (60)
- dhcp工具 (62)
- mysql 1045 (57)
- 宝塔远程工具 (56)
- ssh服务器拒绝了密码 请再试一次 (56)
- ubuntu卸载docker (56)
- linux查看nginx状态 (63)
- tomcat 乱码 (76)
- 2008r2激活序列号 (65)