
精通Nginx
文章平均质量分 91
在Web服务器市场,Nginx从2021年至今市场份额一直占据第一,目前使用站点4亿多。本专栏目标是让读者对Nginx从入门到精通。内容组织方式是针对Nginx的每个功能点(如负载均衡、缓存、流量管控等)拆开讲解,让读者知其然并知其所以然,使读者在工作实战中充分挖掘到Nginx潜能,以及调优解难
乐享技术
资深IT行业专家:从事过软件需求分析、设计、开发、测试、试运行、运维、研发管理等多个岗位。先后研发过应用服务器框架、自动化测试框架并投入项目实战;主持过产品研发全过程方法实践论编纂,并推广使用。希望通过记录、整理、分析与总结,与同行分享共勉!
展开
-
Nginx附-实战之负载均衡时怎么让请求不转发到一台正在启动的tomcat服务器上
用nginx做负载均衡的时候,当一台挂掉的时候,请求会转发到另外一台。但挂掉这一台的tomcat服务在启动过程中,Nginx请求可能会转发到这台正在启动的服务器上,就会一直等待直到超时,前端使用者的体验就会很差。如何让Nginx等待tomcat启动完成后才转发请求到服务器呢?原创 2023-12-25 08:22:14 · 830 阅读 · 0 评论 -
Nginx(26)-构建Nginx高可用、集群及性能监控
高可用性的核心理念是在多个活跃节点上进行负载均衡、主-主、主-备故障转移,高可用性应用不会出现单点故障。通过Nginx负载均衡,被代理的应用服务器达到了高可用目的。作为一个高可用理念的完整系统,Nginx本身也应该是高可用的。原创 2023-12-20 08:22:55 · 1243 阅读 · 0 评论 -
Nginx(25)-Nginx Plus增强功能之缓存清除、复杂媒体流支持、安全防护
Nginx Plus在缓存清除、复杂媒体流支持、安全防护也做了增强。原创 2023-12-18 08:17:29 · 1685 阅读 · 0 评论 -
Nginx(24)-Nginx Plus增强功能之身份验证JWT
使用NGINX Plus,可以使用JWT身份验证来控制对资源的访问。JWT 规范是 OpenID Connect 的重要基础,它为 OAuth 2.0 生态系统提供了单点登录令牌。JWT 本身还可以用作身份验证凭证,相比传统 API 密钥,它提供了一种更好的对基于 Web 的 API 的访问控制。API和微服务的部署者也在转向JWT标准,因为它的简单性和灵活性。使用JWT身份验证,客户端提供一个JSON Web令牌,该令牌将根据本地密钥文件或远程服务进行验证。原创 2023-12-13 08:36:08 · 1783 阅读 · 0 评论 -
Nginx(23)-Nginx Plus增强功能之负载均衡
Nginx作为开源版,提供大量的丰富功能,能满足大部分需要。Nginx Plus是Nginx的加强版,是在开源Nginx功能基础上,提供了许多适合生产环境的专业功能,包括高可用性、主动健康检查、DNS 系统发现、会话保持和 RESTful API等,但这些功能基本都需要收费。本文讲述这些增强功能。原创 2023-12-10 10:06:57 · 1383 阅读 · 0 评论 -
Nginx(22)-网络传输层负载均衡-Stream和Mail
前面章节主要讲述Nginx对http协议的支持,这也是Nginx使用最广泛的功能。本节补充讲述Nginx对Stream协议和Mail协议的支持。原创 2023-12-06 14:32:01 · 1538 阅读 · 0 评论 -
Nginx(21)-十几种提升性能的优化方法
无论何种类型的服务器或应用,其性能都取决于许多可变项,包括但不限于物理硬件、操作系统、数据库、应用服务器等中间件、应用结构等。性能优化通常在碰到性能瓶颈时才进行调优测试,确定瓶颈,改进限制,并不断重复,直至满足性能需求。本文仅针对Nginx作为一个中间件如何进行性能优化,解决出现在Nginx这个环节的瓶颈。如果是第一次优化,性能提升达到10倍都不是梦。原创 2023-12-04 08:35:33 · 1163 阅读 · 0 评论 -
Nginx(20)-多种调试配置的方法与技巧
NGINX功能强大,模块多,对复杂需求要正确配置或正确调优,是有一定难度的。因此,如何进行配置调试就很重要,特别是对于生产环境调试。本文主要提供调试方法或技巧,对于配置调试Nginx非常又帮助。原创 2023-11-29 08:28:54 · 1328 阅读 · 0 评论 -
Nginx(19)-更多实用功能:身份认证、流媒体支持、大文件传输、流量镜像、分片、获取客户端真实ip等
Nginx具有很多强大功能,专栏前面讲述的主要是常用功能。本文主要讲述常用之外的其它实用功能,如身份认证、流媒体支持、大文件传输等。为充分利用Nginx,对这些技术都又必要了解。原创 2023-11-26 13:18:23 · 1363 阅读 · 0 评论 -
Nginx(18)-如何支持FastCGI/SCGI/uWSGI
最初用浏览器浏览的网页只能是静态html页面。随着社会发展,动态获取数据、操作数据需要变得日益强烈,CGI应运而生。CGI(Common Gateway Interface)公共网关接口,是外部扩展应用程序与静态Web服务器交互的一个标准接口。它可以使外部程序处理浏览器送来的表单数据并对此作出响应,响应结果可直接返回给浏览器。CGI技术示意图如下:CGI程序可以用任何脚本语言或独立编程语言实现。然而,由于每次请求都需要启动一个新的程序,导致CGI的性能相对较低,扩展性也较差。原创 2023-11-23 09:43:44 · 1217 阅读 · 0 评论 -
Nginx(17)-安全管控之防暴露、限制访问、防DDos攻击、防爬虫、防非法引用
安全是每个系统都需要考虑的关键因素,Nginx在这方面提供了丰富的功能,使我们可以就实际情形做很精细调整。这些功能包括防信息暴露、客户端访问限制、通讯加密、防DDos攻击、防爬虫、防非法引用及防非法域名请求等。原创 2023-11-22 08:49:53 · 1759 阅读 · 1 评论 -
Nginx(16)-利用http2/http3提升系统性能及支持websocket
HTTP( Hyper Text Transfer Protocol 超文本传输协议)是为Web浏览器与Web服务器之间的通信而设计的应用层传输协议,用于传输超文本文档,基于TCP协议。HTTP/2和HTTP/3都是HTTP发展产物,当前主流是HTTP/2,所有客户端器和服务端均支持。HTTP/3支持还并不那么全面。Nginx也是在最新版本Nginx1.25版本开始支持HTTP/3。原创 2023-11-21 13:34:23 · 1019 阅读 · 0 评论 -
Nginx(15)-快速解决CORS问题
CORS是一个W3C标准,全称是跨域资源共享(Cross-Origin Resource Sharing)。它允许浏览器向跨源服务器,发出XML HttpRequest(XHR) 或Fetch API跨域 HTTP 请求,从而克服了同源使用的限制。CORS 需要浏览器和服务器同时支持。目前,所有浏览器都支持该功能,整个 CORS 通信过程,浏览器自动完成,不需要用户参与。CORS 对开发者透明,CORS 通信与同源的 AJAX 通信没有差别,代码完全一样。原创 2023-11-20 08:00:21 · 2538 阅读 · 0 评论 -
Nginx(14)-HTTPS优化配置及典型问题
HTTPS是在 HTTP 协议的基础上使用 TLS/SSL 加密,其主要目标是提高数据传输的安全性。从HTTP2.0开始,HTTPS已经是网站的标准协议,很多开放平台非HTTPS不能访问。Nginx为HTTPS提供了强大的支持,且对应用服务器是完全透明的。原创 2023-11-16 21:59:07 · 1381 阅读 · 0 评论 -
Nginx(13)-数据压缩是显著提升性能最简单方式
压缩数据是一个重要的、潜在的性能加速器。图片(JPEG 和 PNG)、视频 (MPEG-4)和音乐 (MP3) 等文件都有着精心打造和非常高效的压缩标准,其中任何一个标准都可以将文件缩小一个数量级甚至更多。而HTML(包括纯文本和 HTML 标签)、CSS 和代码(如 JavaScript)等文本数据经常在不压缩的情况下进行传输。压缩这些数据可能会对可感知到的 Web 应用性能产生特别明显的影响,尤其是对速度缓慢或移动连接受限的客户端来说。原创 2023-11-15 10:54:14 · 390 阅读 · 0 评论 -
Nginx(12)-流量管控之分流、访问控制、限制连接速度、限制连接数量、限制带宽
NGINX 可智能地路由流量,并根据多个属性控制流量,包括:分流;利用客户端的地理位置进行访问控制;通过速率、连接数和带宽限制流量。原创 2023-11-14 09:44:45 · 911 阅读 · 0 评论 -
Nginx(11)-缓存详细配置及缓存多种用法
缓存可以提高性能并减少负载,这意味着可以用更少的资源更快地提供服务。NGINX 允许在NGINX 服务器的任何地方缓存内容。借助 NGINX 缓存,还可以在代理的服务器发生故障时被动地缓存并提供缓存的响应。缓存功能仅在 http 上下文中可用。原创 2023-11-13 12:08:25 · 5331 阅读 · 1 评论 -
Nginx(10)-负载均衡详细配置及健康检查
负载均衡就是将前端过来的负载分发到两台或多台应用服务器。Nginx支持多种协议的负载均衡,包括http(s)、TCP、UDP(关于TCP、UDP负载均衡另文讲述)等。原创 2023-11-10 08:47:30 · 1626 阅读 · 0 评论 -
Nginx(09)-强大的重写重定向
Nginx重写主要目标是基于改写URI,返回重定向和有条件地选择配置。原创 2023-11-09 08:38:13 · 143 阅读 · 0 评论 -
Nginx(08)-反向代理
反向代理(Proxy)指用代理服务器接受外部的连接请求,然后将请求转发给真实提供服务的服务器,并将从服务器上得到的结果返回给请求连接的客户端。示意图如下:保护目标服务器的资源安全:反向代理可以隐藏目标服务器的真实 IP 地址和端口,防止恶意用户直接攻击目标服务器。只有反向代理服务器对外可见,从而保护了目标服务器的资源安全。节省有限的 IP 地址资源:由于公网 IPv4 地址资源有限,通过使用反向代理,可以将多个后端服务器(用内网ip地址即可)隐藏在同一个公网 IP地址后面。原创 2023-11-08 08:44:00 · 124 阅读 · 0 评论 -
Nginx(07)-web服务从C10k到C100k高性能
Nginx初衷就是解决 C10K 问题:即客户端同时处理10,000 个连接的问题。因此作为Web服务器就是其最基础的功能。当前B/S应用实现一般都采用动态分离,Nginx作为静态Web服务器是个很好的选择。原创 2023-11-07 08:36:30 · 137 阅读 · 0 评论 -
Nginx(06)-日志配置与作用
利用日志查找配置问题或应用故障是常用手段。使用 NGINX 可有效控制对应用有意义的日志信息。NGINX 允许您根据不同的上下文将日志以不同的格式拆分到不同的文件中,并更改错误日志的日志级别,以更深入地了解当前状况。原创 2023-11-06 08:33:26 · 219 阅读 · 0 评论 -
Nginx(05)-http工作机制、配置指令和内置变量
http服务是Nginx最原始的服务,搞清楚其工作机制非常有利于弄懂nginx是如何工作的。Nginx核心模块为ngx_http_core_module。原创 2023-11-05 11:22:07 · 663 阅读 · 0 评论 -
Nginx(04)-全局配置核心指令
核心指令主要在nginx.conf的主上下文和event上下文中使用。原创 2023-11-03 08:41:47 · 148 阅读 · 0 评论 -
Nginx(03)-配置结构简述
本文主要讲述Nginx配置文件结构及调试技巧。原创 2023-11-02 08:39:12 · 220 阅读 · 0 评论 -
Nginx(02)-rhel、debian、Ubuntu、SUSE安装
本文主要讲述Nginx在Linux下的yum安装方式。Yum安装一般用root模式。原创 2023-10-31 21:05:23 · 340 阅读 · 0 评论 -
Nginx(01)-产品族概览
Nginx是当今使用最广泛的 Web 服务器之一。2021年W3Techs 宣布, Nginx市场份额超越 Apache HTTP Server 成为全球最常用的 Web 服务器,最新Web Server排名如图所示(实际超过4亿站点实用Nginx)。Nginx由Igor Sysoev在2001年创建,其初衷是解决 C10K 问题:即客户端同时处理10,000 个连接的问题。Nginx采用了轻量级、可扩展且功能强大的事件驱动型架构,易于新增动态模块;原创 2023-10-29 21:31:11 · 439 阅读 · 1 评论