Nginx(面试)

NGINX

速记问答

Q 什么是Nginx?它的主要特点是什么?

A Nginx是一个高性能的开源Web服务器和反向代理服务器。它以高并发、低内存消耗和高稳定性著称。

Q Nginx与Apache Web服务器有什么区别?

A Nginx与Apache相比,更适用于处理高并发和静态内容。它使用异步、事件驱动的架构,占用更少的内存,并能够更好地处理静态文件和反向代理。

Q 如何在Nginx中配置虚拟主机(Virtual Hosts)?

A 可以在Nginx的配置文件中使用server块来定义不同域名或IP的虚拟主机,并配置相应的站点设置和规则。

Q 如何在Nginx中配置负载均衡?

A 可以使用Nginx的upstream模块配置负载均衡。通过定义多个后端服务器和相应的负载均衡算法,Nginx可以将请求分发到不同的后端服务器。

Q 如何实现Nginx的反向代理功能?

A 可以使用Nginx的proxy_pass指令配置反向代理。将请求代理到指定的后端服务器,Nginx作为中间层接收请求,并将响应转发给客户端。

Q 如何在Nginx中配置SSL/TLS加密?

A 可以使用Nginx的ssl_certificatessl_certificate_key指令配置SSL/TLS证书和私钥,启用HTTPS安全连接。

Q 如何限制对Nginx服务器的访问?

A 可以使用Nginx的allowdeny指令配置访问控制列表(ACL),限制特定IP地址或IP范围的访问。

Q 如何在Nginx中实现URL重写和重定向?

A 可以使用Nginx的rewrite指令配置URL重写规则,将特定的URL重写为其他URL。可以使用returnrewrite指令实现URL重定向。

Q 如何配置Nginx实现静态文件缓存?

A 可以使用Nginx的expiresadd_header指令配置静态文件的缓存策略,控制浏览器缓存文件的时间和缓存头信息。

Q 如何在Nginx中配置HTTP G=897zip压缩?

A 可以使用Nginx的gzip指令启用HTTP Gzip压缩,将服务器响应压缩后发送给客户端,减少传输数据量。

Q 什么是Nginx的反向代理和正向代理?它们的区别是什么?

A Nginx的反向代理是指Nginx作为客户端与后端服务器进行通信,并将请求代理给后端服务器。正向代理是指Nginx作为服务器接收客户端请求,并代理客户端与目标服务器进行通信。区别在于代理的方向和目的。

Q Nginx支持哪些负载均衡算法?如何配置?

A Nginx支持的负载均衡算法包括轮询(round-robin)、IP哈希(ip_hash)、最少连接(least_conn)等。可以使用Nginx的upstream模块的load_balance指令来配置负载均衡算法。

Q 如何实现Nginx的日志切割和轮转?

A 可以使用Nginx的logrotate工具,将日志文件进行切割和轮转。可以配置logrotate工具的配置文件,定期执行日志切割操作。

Q 如何在Nginx中配置HTTP请求限速?

A 可以使用Nginx的limit_req指令配置HTTP请求的限速。可以设置请求的速率限制和可接受的突发请求的数量。

1. Nginx基本概念和特点

1.1 Nginx的主要特点

Nginx是一款HTTP服务器与反向代理服务器。可以作为一个HTTP服务器进行网站的发布处理 ,同时也可以作为反向代理作为负载均衡的实现

Nginx占有内存少,并发能力强。高度的模块化和自由软件许可证使得第三方模块非常丰富。Nginx一个跨平台服务器。

1.2 Nginx与Apache的差异

Nginx是一个基于事件的Web服务器,Apache是一个基于流程的服务器;Nginx所有请求都由一个线程处理,Apache单个线程处理单个请求;Nginx避免子进程的概念,Apache是基于子进程的。

Nginx支持热部署,Apache不支持热部署;Nginx对于静态文件处理具有更高效率,Apache相对一般;Nginx在反向代理场景具有明显优势,Apache相对一般。

1.3 Nginx主要应用场景

http服务 , 虚拟主机 , 正反代理

1.4 Nginx支持的访问控制方式

连接限制 : 支持对连接频率/请求频率/来源进行限制 ,防止DDOS攻击

IP限制 :实现基于IP的访问控制 , 但通过代理可以绕过限制

帐号限制 : 实现用账户密码的登录限制

流量限制 :实现客户端传送响应的速率限制

2. Nginx的工作原理

  • Nginx启动都会创建一个Master进程和多个Worker进程;

    • Master进程负责管理众多Worker进程,包括启动,停止,重新配置等操作。
    • Worker进程是真正处理请求的进程,每个Worker进程都有一个事件驱动的循环,用于接收和处理客户端的请求。
  • 当客户端发送请求时,请求会被发送到Nginx的监听端口,Nginx会根据配置文件的规则将请求发给对应的Worker进程。

  • Worker进程接收到请求后,会根据规则进行处理,包括静态文件的读取和动态请求的转发。

  • Worker进程处理完请求后,会将响应返回客户端。

  • 在处理请求的过程中,Nginx会使用epoll或select等事件驱动机制,实现高效的IO多路复用,从而提高并发处理能力。

3. Nginx的优化技巧

  • 隐藏版本信息
  • 隐藏Nginx要修改的源代码
  • 更改Nginx服务的默认用户
  • 降权启动Nginx
  • 优化Nginx的进程个数
  • 绑定不同的Nginx到不同的CPU上
  • Nginx事件处理模型优化
  • 调整Nginx单个进程允许客户端最大连接数
  • 配置Nginx Worker进程最大打开文件数
  • 开机高效文件传输模式
  • Nginx gzip压缩实现性能优化
  • 编写脚本实现日志轮讯,不记录无用的日志,修改日志访问权限
  • 根据扩展名限制程序和文件访问
  • 限制网站来源的IP访问
  • 配置Nginx禁止非法域名解析访问企业网站
  • Nginx防爬虫优化
  • 控制Nginx并发连接数量

4. Nginx的日志管理

  • nginx 具备非常灵活的日志记录模式,每个级别的配置可以有各自独立的访问日志。日志格式通过 log_format 命令来定义

    • access_log:访问日志;
    • log_format:日志格式;
    • rewrite_log:重定向日志;
    • error_log:错误日志;
  • 日志切割脚本(以access.log为例)

    • 目地:每天的0点0分把nginx日志重命名为日期后缀格式,并重新生成新日志文件。
#nginx日志切割脚本
#author: http://www.nginx.cn
#!/bin/bash
#日志文件存放目录
logs_path='/usr/local/nginx/logs/'
#pid文件位置
pid_path='/usr/local/nginx/nginx.pid'
#重命名日志文件
mv ${logs_path}access.log ${logs_path}access_$(date -d 'yesterday' +'%Y%m%d').log
#向nginx主进程发信号重新打开日志
kill -USR1 `cat ${pid_path}`
设置corntab定时任务
0 0 * * * bash /usr/local/nginx/nginx_log.sh

5. Nginx的负载均衡和反向代理

6.1 upstream模块 :使用upstream模块定义一个服务器组,配置后端服务器。

6.2 权重分配 :为upstream中的服务器分配权重 ,实现不用的负载分配策略。

6.3 健康检查 :配置健康检查来监控后端服务器的状态,并将请求路由到健康的服务器。

6.4 持久链接 : 使用keepalive指令保持与后端服务器的持久连接,减少连接开销。

6.5 IP哈希 : 使用ip_hash指令实现基于客户端IP的会话持久性,以提高缓存效率和用户体验。

6. Nginx的配置文件解析

  • Nginx 主配置文件 /etc/nginx/nginx.conf 是一个纯文本类型的文件,整个配置文件是以区块的形式组织,通常每一个区块以一对大括号{}来表示开始与结束。

    • 如果使用yum安装主配置文件就在/etc/nginx/nginx.conf ,如果是编译安装的,那么配置文件在编译时所指定的目录。
  • Main 位于 nginx.conf 配置文件的最高层;

    • Main层配置的参数对所有Server都生效。
  • Main 层下可以有 Event、HTTP 层;

    • events 块涉及的指令主要影响 Nginx 服务器与用户的网络连接。
    • http 全局块配置的指令包括文件引入、MIME-TYPE 定义、日志自定义、连接超时时间、单链接请求数上限等。
  • Http 层下面允许有多个 Server 层,用于对不同的网站做不同的配置;

    • 通常 Server 配置在独立的/etc/nginx/conf.d/*.conf中,通过引用的方式调用,如下/etc/nginx/conf.d/default.conf:

      Server 块也被叫做“虚拟主机”部分,它描述的是一组根据不同 server_name 指令逻辑分割的资源

  • Server 层下面允许有多个 Location,用于对不同的路径进行不同模块的配置。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/773989.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

实现UI自动化测试,这5个常见问题你必须知道!

UI自动化测试一直都是如此的令人纠结,自动化测试初学者总是拿它入门,但有些经验丰富者对其又是毁誉参半,抑或抛出分层自动化测试那个经典的“金字塔”,来说明UI自动化测试还是少做为好。 我在从事7年产品研发之后,临危…

KMP算法模板(Java)

KMP算法是一种字符串匹配算法,用于匹配模式串P在文本串S中出现的所有位置,例如S“abc”,P“aba”那么出现的所有位置是1,3,这里我不细说他的原理,只告诉模板了。 import java.math.BigInteger; import java.util.*;pub…

DevOps是什么

DevOps 是一种将软件开发 (Dev) 和 IT运维 (Ops) 结合起来的实践、文化和哲学,旨在缩短系统开发生命周期,提供高质量的软件持续交付。它涉及多个关键实践和工具,其核心目的是加强开发和运维团队之间的协作和通信。以下是构成DevOps的一些重要…

c语言--实用调试技巧

1什么是bug 2调试是什么,有多重要? 3debug与release 4windows环境调试简绍 5一些调试的实例 6如何写出好的代码(便于调试) 7编程常见错误 1什么是bug 导致计算机出现问题就叫bug 2调试是什么,有多重要&#x…

靠谱服装库存管理系统大盘点,商陆花、管家婆、秦丝哪家强?

在服装行业,库存管理是至关重要的环节。对于咱服装老板来说,选对的库存管理系统是提高效率、降低运营成本的关键。市场里有不少系统,我们今天拿出来最常见的5款,给大家一个详细指南。 选择服装库存管理系统时应考虑以下因素&…

dndc模型:可以模拟几乎所有陆地生态系统的动态模拟模型

由于全球变暖、大气中温室气体浓度逐年增加等问题的出现,“双碳”行动特别是碳中和已经在世界范围形成广泛影响。国家领导人在多次重要会议上讲到,要把“双碳”纳入经济社会发展和生态文明建设整体布局。同时,提到要把减污降碳协同增效作为促…

vue3+TS:自定义择色器组件

一、效果展示 自定义择色器 二、项目地址 GitHub - yigedayouzi/color-picker 三、体验地址 缓若江海凝清光

REACH和ROHS的区别是什么?

REACH检测 REACH介绍 REACH指令是“化学品注册、评估、许可和限制”的英文简称。REACH主要内容是要求证明日用产品中不含对人体有害的化学物质。因此,凡是在欧盟生产的或者是进口到欧盟市场的日用产品,其中主要是指纺织品,必须通过有害化学物…

TinyEMU源码分析之启动流程

TinyEMU源码分析之启动流程 1 始于0x10002 确定BBL入口点3 mentry.S执行过程4 启动流程小结 本文属于《 TinyEMU模拟器基础系列教程》之一,欢迎查看其它文章。 本文中使用的代码,均为伪代码,删除了部分源码。 1 始于0x1000 我们沿着TinyEMU…

【GameFramework框架内置模块】17、声音(Sound)

推荐阅读 CSDN主页GitHub开源地址Unity3D插件分享简书地址QQ群:398291828大家好,我是佛系工程师☆恬静的小魔龙☆,不定时更新Unity开发技巧,觉得有用记得一键三连哦。 一、前言 【GameFramework框架】系列教程目录: https://blog.csdn.net/q764424567/article/details/1…

DCS系统在工业场合中的功能是什么?为你揭秘常见DCS系统的应用场景

一.DCS系统的功能和应用 DCS系统的主要功能包括数据采集和处理、监控和报警、控制和调节、历史数据记录和趋势分析等。通过这些功能,DCS系统可以实现自动化控制、优化生产过程、提高生产效率和质量等目标。DCS系统广泛应用于各个行业,如化工、电力、制药…

git已提交的文件夹设置为忽律

如果你想要将已提交的文件夹及其子文件夹添加到 Git 的忽略列表(.gitignore)中,可以按照以下步骤操作: 确保文件夹不再被追踪: 首先,确保要忽略的文件夹及其子文件夹不再被 Git 追踪。可以使用以下命令来从…

【爬虫基础】第2讲 使用Urllib库创建第一个爬虫程序

Urllib 是 Python 的标准库,它提供了一系列用于处理 URL 的函数和类,包括发送 HTTP 请求、处理 HTTP 响应、解析 URL 等功能。可以使用 urllib 来编写简单的网络爬虫。 request:它是最基本的HTTP请求模块,可以用来模拟发送请求。只…

大学教材《C语言程序设计》(浙大版)课后习题解析 | 第三、四章

概述 本文主要提供《C语言程序设计》(浙大版) 第三、四章的课后习题解析,以方便同学们完成题目后作为参考对照。后续将更新第五、六章节课后习题解析,如想了解更多,请持续关注该专栏。 专栏直达链接:《C语言程序设计》(浙大版)_孟…

R折线图(自备)

目录 折线图基础 创建散点和折线图 复杂折现加图例 折线图柱状图 数据处理 进行差异检验 基础绘图折线 基础绘图箱线 进行合并 双轴柱状与折线图 数据 折线图基础 创建散点和折线图 rm(list ls()) opar <-par(no.readonlyTRUE)##自带orange数据集 par(mfrowc…

鸿蒙(HarmonyOS)Navigation如何实现多场景UI适配?

场景介绍 应用在不同屏幕大小的设备上运行时&#xff0c;往往有不同的UI适配&#xff0c;以聊天应用举例&#xff1a; 在窄屏设备上&#xff0c;联系人和聊天区在多窗口中体现。在宽屏设备上&#xff0c;联系人和聊天区在同一窗口体现。 要做好适配&#xff0c;往往需要开发…

DevStack 部署 OpenStack 多节点

DevStack 部署 OpenStack 多节点 DevStack 支持OpenStack多节点部署&#xff0c;下面以一个控制节点和一个计算节点为例&#xff0c;介绍多节点多网卡部署流程。 官方文档&#xff1a; https://docs.openstack.org/devstack/latest/guides/multinode-lab.html https://docs…

探秘 RabbitMQ 的设计理念与核心技术要点

目录 一、消息中间件介绍 1.1 消息中间件的作用 二、RabbitMQ 2.1 核心概念 2.2 生产者发送消息过程 2.3 消费者接收消息过程 2.4 RabbitMQ 为何要引入信道(channel) 2.5 消费模式 一、消息中间件介绍 消息队列中间件&#xff08;message queue middleWare, MQ&#xff09;指…

C/C++ ② —— C++11智能指针

1. 为什么要使用智能指针&#xff1f; 智能指针可以解决忘记释放内存导致内存泄漏的问题&#xff1b;智能指针可以解决异常安全问题。 2. 智能指针的原理 RAII&#xff08;Resource Acquisition Is Initialization&#xff09;是一种利用对象生命周期来控制程序资源&#xf…

刷题之贪心3

前言 大家好&#xff0c;我是jiantaoyab&#xff0c;这篇文章将给大家介绍贪心算法和贪心算法题目的练习和解析&#xff0c;贪心算法的本质就是每一个阶段都是局部最优&#xff0c;从而实现全局最优。加上这篇文章一共有30道贪心题目了&#xff0c;加油! 坏了的计算器 题目分析…