Nginx高可用实战

2023-11-04

来源:jingfengjiaoyu

Nginx的特点

跨平台:Nginx 可以在大多数 Unix like OS编译运行,而且也有Windows的移植版本。
配置异常简单,非常容易上手。配置风格跟程序开发一样,神一般的配置
非阻塞、高并发连接:数据复制时,磁盘I/O的第一阶段是非阻塞的。官方测试能够支撑5万并发连接,在实际生产环境中跑到2~3万并发连接数.(这得益于Nginx使用了最新的epoll模型)
事件驱动:通信机制采用epoll模型,支持更大的并发连接。
master/worker结构:一个master进程,生成一个或多个worker进程
内存消耗小:处理大并发的请求内存消耗非常小。在3万并发连接下,开启的10个Nginx 进程才消耗150M内存(15M*10=150M) 成本低廉:Nginx为开源软件,可以免费使用。而购买F5 BIG-IP、NetScaler等硬件负载均衡交换机则需要十多万至几十万人民币
内置的健康检查功能:如果 Nginx Proxy 后端的某台 Web 服务器宕机了,不会影响前端访问。
节省带宽:支持 GZIP 压缩,可以添加浏览器本地缓存的 Header 头。
稳定性高:用于反向代理,宕机的概率微乎其微

nginx代理和后端web服务器间无需长连接;
接收用户请求是异步的,即先将用户请求全部接收下来,再一次性发送后后端web服务器,极大的减轻后端web服务器的压力
发送响应报文时,是边接收来自后端web服务器的数据,边发送给客户端的
网络依赖型低。NGINX对网络的依赖程度非常低,理论上讲,只要能够ping通就可以实施负载均衡,而且可以有效区分内网和外网流量
支持服务器检测。NGINX能够根据应用服务器处理页面返回的状态码、超时信息等检测服务器是否出现故障,并及时返回错误的请求重新提交到其它节点上

Nginx是如何处理一个请求

首先,nginx在启动时,会解析配置文件,得到需要监听的端口与ip地址,然后在nginx的master进程里面,先初始化好这个监控的socket(创建socket,设置addrreuse等选项,绑定到指定的ip地址端口,再listen),然后再fork(一个现有进程可以调用fork函数创建一个新进程。由fork创建的新进程被称为子进程 )出多个子进程出来,然后子进程会竞争accept新的连接。此时,客户端就可以向nginx发起连接了。当客户端与nginx进行三次握手,与nginx建立好一个连接后,此时,某一个子进程会accept成功,得到这个建立好的连接的socket,然后创建nginx对连接的封装,即ngx_connection_t结构体。接着,设置读写事件处理函数并添加读写事件来与客户端进行数据的交换。最后,nginx或客户端来主动关掉连接,到此,一个连接就寿终正寝了。

Nginx典型的应用场景

在这里插入图片描述
Nginx常见配置说明

worker_processes 8;
#nginx进程数,建议设置为等于CPU总核心数
worker_connections 65535;
#单个进程最大连接数(最大连接数=连接数*进程数)
client_header_buffer_size 32k; #上传文件大小限制
large_client_header_buffers 4 64k; #设定请求缓
client_max_body_size 8m; #设定请求缓
autoindex on; #开启目录列表访问,合适下载服务器,默认关闭。
tcp_nopush on; #防止网络阻塞
tcp_nodelay on; #防止网络阻塞
keepalive_timeout 120; #长连接超时时间,单位是秒
gzip on; #开启gzip压缩输出
gzip_min_length 1k; #最小压缩文件大小
gzip_buffers 4 16k; #压缩缓冲区
gzip_http_version 1.0; #压缩版本(默认1.1,前端如果是squid2.5请使用1.0)
gzip_comp_level 2; #压缩等级

upstream blog.ha97.com {
#upstream的负载均衡,weight是权重,可以根据机器配置定义权重。weigth参数表示权值,权值越高被分配到的几率越大。
server 192.168.80.121:80 weight=3;
server 192.168.80.122:80 wei
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Nginx高可用实战 的相关文章

  • 禁用 Kubernetes NGINX 入口的 SSL 重定向

    默认情况下 在 Kubernetes NGINX 入口中启用 SSL 重定向 如何禁用此功能 目前的实施如下 apiVersion extensions v1beta1 kind Ingress metadata name project
  • 如何列出 nginx 中的所有虚拟主机

    有没有一个命令可以列出 CentOS 上 nginx 下运行的所有虚拟主机或服务器 我想将结果通过管道传输到文本文件以用于报告目的 我正在寻找与我用于 Apache 的命令类似的命令 apachectl S 2 gt 1 grep 端口 8
  • 对于较大的请求正文,Nginx proxy_cache_key $request_body 将被忽略

    我使用 nginx 作为反向代理 我希望它能够缓存 POST 请求 我的后端已正确配置为为 POST 请求返回适当的缓存控制标头 在 nginx 中我配置了 proxy cache methods POST proxy cache key
  • Nginx 在子文件夹中重写 (404)

    我有一个网站主机NGINX曾经工作正常的服务器删除index php在 nginx 站点配置中使用try files 但现在我要在上面添加一个博客 其中 URL 将是www foo com blog 我可以访问博客并使用index php
  • MVC 框架中的缓存策略?

    我编写了自己的小型 PHP MVC 框架 现在正在探索 PHP MVC 框架中的缓存策略 我正在考虑可以缓存什么 在哪里以及如何缓存 我的框架是简单的MVC框架 我有前端控制器 它启动应用程序 注册类自动加载 设置 php 运行时指令 最后
  • Kibana 5.5.1 位于 nginx 1.13 代理之后(dockerized)

    Goal 我想在 docker 容器中运行 elk 堆栈 能够通过 nginx 代理访问 ELK Stack 以绕过服务的各个端口 Kibana 服务 默认端口 5601 http
  • 从 git repo 拉取后出现白屏死机(React JS、Nginx)

    每当我从 master 分支执行 git pull 到服务器上时 我所有的 React 文件似乎都消失了 屏幕变成白色 我发现的临时解决方法是 删除浏览器 cookie 缓存和站点历史记录 然后关闭浏览器并重试 删除node modules
  • 在运行服务启动/停止/重新启动 nginx 命令时调用 openresty 的 nginx.conf 文件

    我使用 nginx 作为我的 Django 项目的 Web 服务器 我正在使用命令 sudo service nginx start stop restart 管理 nginx 服务器 现在我使用 Openresty 框架将 Lua 代码实
  • Capistrano + Thin + nginx 不允许用户使用 sudo howto?

    我有一个这样的场景 我想使用 capistrano 部署 ruby on Rails 应用程序 Web 应用程序位于瘦集群上 配置文件存储在 etc thin 下 etc init d thin 中还有一个初始化脚本 因此每当我的服务器需要
  • Nginx 与 phpmyadmin 登录后重定向错误

    我正在使用 nginx 设置 phpMyAdmin 我可以访问 phpMyAdminhttp localhost phpmyadmin http localhost phpmyadmin 但是 当我登录时 URL 被重定向到http loc
  • 适用于 Windows 的键值数据库?

    除了 MongoDB 和 Memcached 之外 Windows 上还运行哪些键值存储 我见过的大多数似乎只能在 Linux 上运行 Hypertable Redis Lightcloud 相关链接 是否有经过商业验证的云存储 Key g
  • 生产中的静态文件出现 Django 301 和 403 禁止错误

    我正在尝试使用 nginx 和 Gunicorn 在 ubuntu 14 04 vps 上部署 django 网站 但是我的 css 文件和 js 文件没有加载 我在默认的 django 开发服务器上开发了它 它运行得很好 但是当我部署我的
  • Spymemcached-Memcached/Membase 故障转移

    平台 64位Windows操作系统 spymemcached 2 7 3 jar J2EE 我们想使用两个 memcache membase 服务器来实现缓存解决方案 我们希望为每个 memcache membase 服务器分配 1 GB
  • Nginx 相对 URL 到绝对重写规则?

    给出以下配置 server listen 80 server name site com location proxy proxy pass http newsite com site com 上托管的页面使用相对路径 main css 对
  • 将虚拟主机分配给 Docker 端口

    我设置了通配符 DNS 以便对自定义域 foo 的所有 Web 请求都映射到 Docker 主机的 IP 地址 如果我有多个运行 Apache 或 Nginx 实例的容器 每个容器都会将 Apache 端口 80 映射到某个外部入站端口 我
  • Nginx:在同一服务器上为多个 React 应用程序提供服务

    我正在尝试在同一服务器上设置多个 React 应用程序 问题是在我构建项目之后 index html from build 已找到 但辅助文件来自build static不是 最初 我只用一个应用程序location static 有别名
  • GitLab 发布临时 IP 禁令 - 403 禁止

    我的 GitLab 实例设置有时会对我们自己的 IP 地址实施 IP 禁令 导致办公室中的所有用户在任何网页或 git 请求上都会收到 403 Forbidden 该禁令的实施是由于身份验证重复出现错误 这完全是一个单独的问题 但我想防止我
  • Memcachier 达到缓存限制时 Heroku 请求超时

    我使用 Memcachier Dalli 作为客户端 将 Rails 应用程序部署到 Heroku 我正在使用免费插件 提供 25 MB 缓存 我们开始收到来自heroku的请求超时 经过调试 我们发现手动刷新Memcachier解决了问题
  • nginx设置问题

    我知道这不是一个直接的编程问题 但是 stackoverflow 上的人似乎能够回答任何问题 我有一台运行 Centos 5 2 64 位的服务器 非常强大的双核 2 服务器 具有 4GB 内存 它主要提供静态文件 Flash 和图片 当我
  • 通过 ESI:include 设置 Cookie,如何?

    我正在尝试使用 esi 在我的网站上创建忍者缓存 这个想法是 该网站大部分是静态的 我只需要在用户是否登录时做一些花哨的事情 所以我试图在页面A上放置一个 并在页面B的应用程序中设置触发器 这样我就可以将页面 A 缓存在 varnish 上

随机推荐

  • 提供一个用于计算两个point之间的距离方法_汇总

    作者 Tom Hardy Date 2020 02 18 来源 汇总 基于3D点云的深度学习方法 前言 三维数据通常可以用不同的格式表示 包括深度图像 点云 网格和体积网格 点云表示作为一种常用的表示格式 在三维空间中保留了原始的几何信息
  • 已解决报错UnboundLocalError: local variable ‘title‘ referenced before assignment

    1 今天抓取某网站的数据时 显示报错UnboundLocalError local variable title referenced before assignment Traceback most recent call last Fi
  • 无法启动64位idea,无法启动idea64.exe的一种原因(意外删除破解文件导致无法打开idea)

    前言 突然有一天 我的IDEA出现了问题 点击桌面快捷方式的idea毫无反应 无奈之下重装了IDEA 但还是有相同的问题 无法打开64位的idea 网上找了一堆博客 花了两个多小时终于解决了 写篇博客记录下这个问题 1 首先打开idea b
  • 初识网络安全(黑客技术)

    目录 前言 一 安全事件案例 二 网络安全行业公司 三 网络安全岗位 四 网络安全网站 五 src漏洞平台 总结 前言 网络安全是指保护计算机网络和网络上的数据免受未经授权的访问 使用 泄露 破坏和干扰的一系列措施和技术 在当今数字化时代
  • JAVA web 获取系统时间

  • ROS---保存地图

    建立save map sh文件夹 bin bash rosrun map server map saver f catkin ws src hypharos minicar launch map mymap 保存地图时我们进入此文件所在文件
  • 从零实现一套属于自己的UI框架-发布到npm

    汤小梦 https juejin im post 5e200ee86fb9a02fdd38986d 不知不觉马上就要放假了 写一篇文章祝愿 2020 越来越好 如今前端工程师的要求越来越高了 需要掌握的技术点越来越多了 会一些基本的前端技能
  • 华为云 CentOS 8 下 Nginx 1.20 & PHP 8.2 安装

    Nginx 1 20 版本安装 使用 dnf module 选择 nginx 版本 如果不选择 默认安装 1 14 版 1 先 RESET 一下 xxx ecs 209716 sudo dnf module reset nginx Repo
  • 子网划分,子网掩码

    1 IP地址分类 有类编址 所谓的同一网段就是 网络位一模一样 才叫在同一网段 否则不是在同一网段 网络位 主机位 固定电话的区号 025 主机你的电话号码 85562264 同一区号 之间 漫游费 南京 徐州 苏州 漫游 借助路由器转发我
  • Qt多线程中的moveToThread()的简单用法

    之前在项目中用到了Qt的多线程 因为以前用的一直是用一个类直接继承QThread 然后再重写run 方法 需要注意的是 QThread只有run函数是在新线程里的 其他所有函数都在QThread生成的线程里 后来查阅了一些资料才知道 Qt有
  • 00_Ubuntu系统入门

    目录 前言 一 Ubuntu系统安装 1 1 VMware15安装虚拟机不兼容 无法打开 1 2 Ubuntu联网问题 二 Ubuntu系统入门 2 1 Ubuntu系统初体验 2 2 Ubuntu终端操作 2 3 shell操作 2 3
  • 关于汇编语言寄存器和指令操作的整理

    最近汇编学到后面的内容 越来越觉得前面的基础没有掌握好 弄得最后编写汇编程序的时候 寄存器瞎用 没有一点的规矩 中断操作也不知道是对哪个寄存器里的数进行操作 每次做一个小程序 都得翻书后面的INT中断查询表 感觉很不爽 今天花了大半天把几本
  • 数据通信——因特网基础

    引言 之前最开始并接触学习的是华为的路由器交换机等知识 后来慢慢的扩充到了计算机网络 现在在备考计网专业课 因此写一下我对计网现阶段知识的认知 也是对考研备考时的一个复习 我将用易于理解的逻辑阐述下计网中难以理解的知识 希望大家也多多补充并
  • Visual C++ 运行窗口一闪而过的解决方法

    本文简单介绍了Visual C 编写运行程序的步骤 解决Visual C 2010开发环境中运行程序时运行窗口一闪而过的问题 总结了 断点调试 F5 方法 开始执行 Ctrl F5 方法 调试工具条方法 暂停语句或者输入等待方法 共4种方法
  • jvisualvm远程监控centos上虚拟机的状态

    要使用jvisualvm监视远程主机需要先再远程主机上运行jstatd 1 在 JAVA HOME bin目录下新建jstatd all policy文件 内容如下 grant codebase file java home lib too
  • 符号优先级误区一:移位运算符优先级比加减运算符低

    目录 移位运算符优先级比加减运算符低 误区 发现问题 实际结果 举例子证实 代码如下 实际结果 移位运算符优先级比加减运算符低 这是我在做二分查找时发现的问题 误区 发现问题 直接除2 int mid start end start 2 移
  • message from server: “Host is not allowed to connect to this MySQL server“问题的解决办法

    数据库安装完成后 默认是不能远程登陆的 只能在本地用localhost 或者127 0 0 1登录访问 如果需要远程登录 则需要修改mysql设置 具体修改方式 1 本地登录mysql root localhost mysql u root
  • Java的网络编程

    网络编程是指编写运行在多个设备 计算机 的程序 这些设备都通过网络连接起来 java net 包中 J2SE 的 API 包含有类和接口 它们提供低层次的通信细节 你可以直接使用这些类和接口 来专注于解决问题 而不用关注通信细节 java
  • react生命周期---参考学习20220726

    react生命周期笔记 笔记 react生命周期 链接 react生命周期 https projects wojtekmaj pl react lifecycle methods diagram 1 挂载时 挂载时调用四个生命周期函数 2
  • Nginx高可用实战

    来源 jingfengjiaoyu Nginx的特点 跨平台 Nginx 可以在大多数 Unix like OS编译运行 而且也有Windows的移植版本 配置异常简单 非常容易上手 配置风格跟程序开发一样 神一般的配置 非阻塞 高并发连接