浅谈Nginx原理及其相关知识点

前言:

目录:

一、Nginx是什么
二、Nginx的反向代理
三、Nginx的负载均衡
四、Nginx的常用命令

一、Nginx是什么

1.1Nginx是一个高性能的开源Web服务器和反向代理服务器,也可以用作负载均衡器、HTTP缓存服务器和邮件代理服务器。

1.2其采用了事件驱动和异步非阻塞的方式,能高效处理大量并发连接。

1.3其代码量小,内存占用低。能在低配置的硬件上高效运行。

1.4基于稳定的事件驱动架构开发,能够有效避免由于代码错误或者第三方库问题导致的崩溃。高可靠性。

1.5提供了丰富的模块,包括http模块,SSL/TLS加密模块,负载均衡模块等,用户可以根据需求灵活启用或禁用模块。

1.6其配置文件采用类似c语言的语法,灵活。

1.7其支持在不停止服务的情况下重新加载配置文件或者更新软件版本,实现零停机时间部署(热部署)。

1.8其支持在多种操作系统上运行,包括linux和windows

主要功能:

  • http服务器:作为静态和动态网页的http服务器,处理客户端的http请求。

  • 反向代理:将客户端的请求转发到后端的一个或多个服务器上,隐藏后端服务器的真正ip地址,提高安全性。

  • 负载均衡:在多个后端服务器之间分配请求,根据负载均衡算法(轮询、权重等)提高应用的可用性和扩展性。

  • http缓存:缓存静态内容和后端服务器的响应,减少后端服务器的负载,提高响应速度。

  • SSL/TSL终端代理:支持SSL/TLS协议,为客户端提供安全的https访问。

  • 静态内容服务:高效处理静态文件,如图片、视频、css和js文件。

  • 压缩:支持Gzip压缩,减少传数据的大小,加快页面加载速度。

  • 邮件代理:支持SMTP、POP3和IMAP协议,可以作为邮件代理服务器。

二、Nginx的反向代理

无代理:浏览器->服务区

正向代理:浏览器->代理->其他服务器(翻墙)

反向代理:浏览器->nginx->服务器

反向代理详解:当我们访问电商平台时,他们是多服务器的,但服务器之间的session不共享(而现在我们都是单点登录),nginx能够实现登录一次访问所有服务器,这就是反向代理。对外暴露的就是代理服务器地址,隐藏了真实服务器地址。

三、负载均衡

负载均衡的模式:

  1. 轮询(Round Robin) 描述: 默认算法,按顺序将请求分配到每个服务器。

配置示例:

c 复制代码
upstream backend {
    server backend1.example.com;
    server backend2.example.com;
}
  1. 加权轮询(Weighted Round Robin) 描述: 在轮询的基础上,为每个服务器分配一个权重,权重越高,分配的请求越多。

配置示例:

c 复制代码
upstream backend {
    server backend1.example.com weight=3;
    server backend2.example.com weight=2;
}
  1. IP 哈希(IP Hash) 描述: 根据客户端 IP 地址的哈希值分配请求,确保同一客户端的请求总是分配到同一服务器。

配置示例:

c 复制代码
upstream backend {
    ip_hash;
    server backend1.example.com;
    server backend2.example.com;
}
  1. 最少连接(Least Connections) 描述: 将请求分配到当前连接数最少的服务器。

配置示例:

c 复制代码
upstream backend {
    least_conn;
    server backend1.example.com;
    server backend2.example.com;
}
  1. 加权最少连接(Weighted Least Connections) 描述: 在最少连接的基础上,考虑服务器的权重。

配置示例:

c 复制代码
upstream backend {
    least_conn;
    server backend1.example.com weight=3;
    server backend2.example.com weight=2;
}
  1. 随机(Random) 描述: 随机选择一个服务器处理请求。

配置示例:

c 复制代码
upstream backend {
    random;
    server backend1.example.com;
    server backend2.example.com;
}
  1. 加权随机(Weighted Random) 描述: 在随机选择的基础上,考虑服务器的权重。

配置示例:

c 复制代码
upstream backend {
    random;
    server backend1.example.com weight=3;
    server backend2.example.com weight=2;
}
  1. 基于响应时间的负载均衡(Least Time) 描述: 将请求分配到响应时间最短的服务器。

配置示例:

c 复制代码
upstream backend {
    least_time header;
    server backend1.example.com;
    server backend2.example.com;
}
  1. 基于 URI 的哈希(URI Hash) 描述: 根据请求 URI 的哈希值分配请求,确保同一 URI 的请求总是分配到同一服务器。

配置示例:

c 复制代码
upstream backend {
    hash $request_uri consistent;
    server backend1.example.com;
    server backend2.example.com;
}
  1. 基于 Cookie 的负载均衡(Sticky Cookie) 描述: 使用 Cookie 将客户端请求绑定到特定服务器。

配置示例:

c 复制代码
upstream backend {
    sticky cookie srv_id expires=1h domain=.example.com path=/;
    server backend1.example.com;
    server backend2.example.com;
}

四、常用命令

linux 复制代码
./nginx  启动
./nginx -s stop  停止
./nginx -s quit  安全退出
./nginx -s reload  重新加载配置文件  如果我们修改了配置文件,就需要重新加载。
ps aux|grep nginx  查看nginx进程
nginx -t           检查 Nginx 配置文件的语法是否正确
tail -f /var/log/nginx/error.log   查看错误日志
相关推荐
小天源4 小时前
从 Nginx 日志到访问分析:轻量化网站监测服务的架构实践
jvm·nginx·网络安全·架构·网络监控
幸福清风10 小时前
从域名到一行 nginx 配置:一次站点 HTTPS 证书更换与排障复盘
python·nginx·https
梅梅绵绵冰12 小时前
Nginx反向代理
运维·nginx
2601_965619692 天前
AI视频制作:财经数据可视化视频怎么做:AI 自动生成图表动画的实操流程
人工智能·nginx·音视频
2601_965619692 天前
历史解说视频怎么做:青铜器瓷器文物画面自动对齐的完整教程
运维·nginx·音视频
姜鱼问生2 天前
每次开机手动检查 6 样东西?我写了个 2 秒自检脚本
运维·网络·nginx·docker·容器
xixingzhe23 天前
Nginx 看懂请求耗时瓶颈
服务器·前端·nginx
北风toto3 天前
Windows 下用 OpenSSL 生成 SSL 密钥并配置 Nginx 教程
windows·nginx·ssl
卜锦元3 天前
Docker Compose 部署 Nginx 1.30.6 完整指南
nginx·docker·容器
小小龙学IT4 天前
Nginx 开源 Web 服务器与反向代理深度解
前端·nginx·开源