Nginx完全指南--内容解析(二)(nginxe)
nanshan 2024-11-17 14:12 6 浏览 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。
相关推荐
- 实战派 | Java项目中玩转Redis6.0客户端缓存
-
铺垫首先介绍一下今天要使用到的工具Lettuce,它是一个可伸缩线程安全的redis客户端。多个线程可以共享同一个RedisConnection,利用nio框架Netty来高效地管理多个连接。放眼望向...
- 轻松掌握redis缓存穿透、击穿、雪崩问题解决方案(20230529版)
-
1、缓存穿透所谓缓存穿透就是非法传输了一个在数据库中不存在的条件,导致查询redis和数据库中都没有,并且有大量的请求进来,就会导致对数据库产生压力,解决这一问题的方法如下:1、使用空缓存解决对查询到...
- Redis与本地缓存联手:多级缓存架构的奥秘
-
多级缓存(如Redis+本地缓存)是一种在系统架构中广泛应用的提高系统性能和响应速度的技术手段,它综合利用了不同类型缓存的优势,以下为你详细介绍:基本概念本地缓存:指的是在应用程序所在的服务器内...
- 腾讯云国际站:腾讯云服务器如何配置Redis缓存?
-
本文由【云老大】TG@yunlaoda360撰写一、安装Redis使用包管理器安装(推荐)在CentOS系统中,可以通过yum包管理器安装Redis:sudoyumupdate-...
- Spring Boot3 整合 Redis 实现数据缓存,你做对了吗?
-
你是否在开发互联网大厂后端项目时,遇到过系统响应速度慢的问题?当高并发请求涌入,数据库压力剧增,响应时间拉长,用户体验直线下降。相信不少后端开发同行都被这个问题困扰过。其实,通过在SpringBo...
- 【Redis】Redis应用问题-缓存穿透缓存击穿、缓存雪崩及解决方案
-
在我们使用redis时,也会存在一些问题,导致请求直接打到数据库上,导致数据库挂掉。下面我们来说说这些问题及解决方案。1、缓存穿透1.1场景一个请求进来后,先去redis进行查找,redis存在,则...
- Spring boot 整合Redis缓存你了解多少
-
在前一篇里面讲到了Redis缓存击穿、缓存穿透、缓存雪崩这三者区别,接下来我们讲解Springboot整合Redis中的一些知识点:之前遇到过,有的了四五年,甚至更长时间的后端Java开发,并且...
- 揭秘!Redis 缓存与数据库一致性问题的终极解决方案
-
在现代软件开发中,Redis作为一款高性能的缓存数据库,被广泛应用于提升系统的响应速度和吞吐量。然而,缓存与数据库之间的数据一致性问题,一直是开发者们面临的一大挑战。本文将深入探讨Redis缓存...
- 高并发下Spring Cache缓存穿透?我用Caffeine+Redis破局
-
一、什么是缓存穿透?缓存穿透是指查询一个根本不存在的数据,导致请求直接穿透缓存层到达数据库,可能压垮数据库的现象。在高并发场景下,这尤其危险。典型场景:恶意攻击:故意查询不存在的ID(如负数或超大数值...
- Redis缓存三剑客:穿透、雪崩、击穿—手把手教你解决
-
缓存穿透菜小弟:我先问问什么是缓存穿透?我听说是缓存查不到,直接去查数据库了。表哥:没错。缓存穿透是指查询一个缓存中不存在且数据库中也不存在的数据,导致每次请求都直接访问数据库的行为。这种行为会让缓存...
- Redis中缓存穿透问题与解决方法
-
缓存穿透问题概述在Redis作为缓存使用时,缓存穿透是常见问题。正常查询流程是先从Redis缓存获取数据,若有则直接使用;若没有则去数据库查询,查到后存入缓存。但当请求的数据在缓存和数据库中都...
- Redis客户端缓存的几种实现方式
-
前言:Redis作为当今最流行的内存数据库和缓存系统,被广泛应用于各类应用场景。然而,即使Redis本身性能卓越,在高并发场景下,应用于Redis服务器之间的网络通信仍可能成为性能瓶颈。所以客户端缓存...
- Nginx合集-常用功能指导
-
1)启动、重启以及停止nginx进入sbin目录之后,输入以下命令#启动nginx./nginx#指定配置文件启动nginx./nginx-c/usr/local/nginx/conf/n...
- 腾讯云国际站:腾讯云怎么提升服务器速度?
-
本文由【云老大】TG@yunlaoda360撰写升级服务器规格选择更高性能的CPU、内存和带宽,以提供更好的处理能力和网络性能。优化网络配置调整网络接口卡(NIC)驱动,优化TCP/IP参数...
- 雷霆一击服务器管理员教程
-
本文转载莱卡云游戏服务器雷霆一击管理员教程(搜索莱卡云面版可搜到)首先你需要给服务器设置管理员密码,默认是空的管理员密码在启动页面进行设置设置完成后你需要重启服务器才可生效加入游戏后,点击键盘左上角E...
你 发表评论:
欢迎- 一周热门
-
-
爱折腾的特斯拉车主必看!手把手教你TESLAMATE的备份和恢复
-
如何在安装前及安装后修改黑群晖的Mac地址和Sn系列号
-
[常用工具] OpenCV_contrib库在windows下编译使用指南
-
WindowsServer2022|配置NTP服务器的命令
-
Ubuntu系统Daphne + Nginx + supervisor部署Django项目
-
WIN11 安装配置 linux 子系统 Ubuntu 图形界面 桌面系统
-
解决Linux终端中“-bash: nano: command not found”问题
-
Linux 中的文件描述符是什么?(linux 打开文件表 文件描述符)
-
NBA 2K25虚拟内存不足/爆内存/内存占用100% 一文速解
-
K3s禁用Service Load Balancer,解决获取浏览器IP不正确问题
-
- 最近发表
-
- 实战派 | Java项目中玩转Redis6.0客户端缓存
- 轻松掌握redis缓存穿透、击穿、雪崩问题解决方案(20230529版)
- Redis与本地缓存联手:多级缓存架构的奥秘
- 腾讯云国际站:腾讯云服务器如何配置Redis缓存?
- Spring Boot3 整合 Redis 实现数据缓存,你做对了吗?
- 【Redis】Redis应用问题-缓存穿透缓存击穿、缓存雪崩及解决方案
- Spring boot 整合Redis缓存你了解多少
- 揭秘!Redis 缓存与数据库一致性问题的终极解决方案
- 高并发下Spring Cache缓存穿透?我用Caffeine+Redis破局
- Redis缓存三剑客:穿透、雪崩、击穿—手把手教你解决
- 标签列表
-
- 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)