说说你了解的 Nginx

分析&回答

nginx性能数据

  • 高并发连接: 官方称单节点支持5万并发连接数,实际生产环境能够承受2-3万并发。
  • 内存消耗少: 在3万并发连接下,开启10个nginx进程仅消耗150M内存 (15M×10=150M)

1. 正向、反向代理

所谓"代理",是指在内网边缘 设置一个硬件/软件转发请求; "正向"还是"反向"的说法,取决于转发的是"出站请求"还是"入站请求".

  • 正向代理: 处理来自客户端的出站请求,将其转发到Internet,然后将生成的响应返回给客户端。
  • 反向代理: 处理来自Internet的入站请求,将其转发给后端工作程序,然后将响应返回给Internet。
  1. 正向代理和反向代理 在代理的方向上不同,但都会代理处理HTTP请求/响应。
  2. 代理服务器存在的目的:
    • 堡垒机/隔离内网:内网客户端无法访问外网需要设置堡垒机、隐藏内网工作服务器
    • 代理服务器附加功能:对流量执行操作、使用缓存或压缩来提高性能、防御攻击并过滤信息

2. 负载均衡

负载均衡一般伴随着反向代理, 起到了分配流量、透明代理、 增强容错的效果

复制代码
http {
    upstream myapp1 {
        server srv1.example.com;
        server srv2.example.com;
        server srv3.example.com;
    }

    server {
        listen 80;

        location / {
            proxy_pass http://myapp1;
        }
    }
}
复制代码

负载均衡策略

  • round-robin 顾名思义:轮询
  • least-connected :下一个请求将发往最小活动链接的服务器
  • ip-hash:根据客户端的ip地址和哈希函数 决定将请求发往哪个服务器

3. 动静分离

动静分离与现在火热的前后端分离概念火热相关,

前端可以自行开发、测试,自行使用nginx形成静态资源服务器,后端服务仅作为附加资源。

下面的例子表明 静态资源在/usr/share/nginx/html, 动态资源路径包含api或swagger。

复制代码
  upstream eap_website {
      server eapwebsite;
    }

  server {
      listen      80;
      location / {            # 静态资源
            root /usr/share/nginx/html;
            index index.html index.htm;
            try_files $uri /index.html;
      }

      location ^~ /api/  {     # 动态资源
         proxy_pass         http://eap_website/api/;
      }

      location ^~ /swagger/  {    # 动态资源
         proxy_pass         http://eap_website/swagger/;
      }
  }

喵呜面试助手:一站式解决面试问题,你可以搜索微信小程序 [喵呜面试助手] 或关注 [喵呜刷题] -> 面试助手 免费刷题。如有好的面试知识或技巧期待您的共享!

相关推荐
微露清风1 小时前
系统性学习Linux-第二讲-基础开发工具
linux·运维·学习
阳光九叶草LXGZXJ1 小时前
达梦数据库-学习-48-DmDrs控制台命令(同步之Manager、CPT模块)
linux·运维·数据库·sql·学习
小二李3 小时前
第11章 nestjs服务端开发:登录鉴权
运维·服务器
i建模4 小时前
如何在Arch Linux中重设忘记的root密码
linux·运维·服务器
chatexcel4 小时前
元空AI+Clawdbot:7×24 AI办公智能体新形态详解(长期上下文/自动化任务/工具粘合)
运维·人工智能·自动化
kida_yuan5 小时前
【Linux】运维实战笔记 — 我常用的方法与命令
linux·运维·笔记
何中应7 小时前
vmware的linux虚拟机如何设置以命令行方式启动
linux·运维·服务器
野犬寒鸦7 小时前
从零起步学习并发编程 || 第一章:初步认识进程与线程
java·服务器·后端·学习
江畔何人初7 小时前
kubernet与docker的关系
linux·运维·云原生
bubuly7 小时前
软件开发全流程注意事项:从需求到运维的全方位指南
大数据·运维·数据库