浅谈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   查看错误日志
相关推荐
静水楼台x44 分钟前
nginx日志的一点理解
运维·nginx
欧先生^_^1 小时前
ingress-nginx 开启 Prometheus 监控 + Grafana 查看指标
nginx·grafana·prometheus
眠修3 小时前
Nginx + Tomcat负载均衡群集
nginx·tomcat·负载均衡
瘦皮猴7 小时前
golang context canceled异常排查
后端·nginx
hunter12712 小时前
Nginx 事件驱动理解
nginx
fydw_7151 天前
生产环境中安装和配置 Nginx 以部署 Flask 应用的详细指南
运维·nginx·flask
xzh1 天前
问题:Nginx client_body_temp_path 文件会删除吗,删除时机?
nginx·架构
dessler1 天前
代理服务器-LVS的3种模式与调度算法
运维·服务器·网络·算法·nginx·tomcat·lvs
2501_911121231 天前
Nginx+Tomcat 负载均衡群集
nginx·tomcat·负载均衡
小鱼小鱼.oO2 天前
阿里云服务器安装nginx并配置前端资源路径(前后端部署到一台服务器并成功访问)
服务器·nginx·阿里云