首页 > 系统相关 >[面试题]Nginx

[面试题]Nginx

时间:2024-06-18 18:30:07浏览次数:17  
标签:面试题 请求 nginx Nginx 进程 服务器 fastcgi

  1. [面试题]Java【基础】
  2. [面试题]Java【虚拟机】
  3. [面试题]Java【并发】
  4. [面试题]Java【集合】
  5. [面试题]MySQL
  6. [面试题]Maven
  7. [面试题]Spring Boot
  8. [面试题]Spring Cloud
  9. [面试题]Spring MVC
  10. [面试题]Spring
  11. [面试题]MyBatis
  12. [面试题]Nginx

请解释一下什么是 Nginx ?

Nginx ,是一个 Web 服务器和反向代理服务器,用于 HTTP、HTTPS、SMTP、POP3 和 IMAP 协议。
目前使用的最多的 Web 服务器或者代理服务器,像淘宝、新浪、网易、迅雷等都在使用。
Nginx 的主要功能如下:

  • 作为 http server (代替 Apache ,对 PHP 需要 FastCGI 处理器支持)

FastCGI:Nginx 本身不支持 PHP 等语言,但是它可以通过 FastCGI 来将请求扔给某些语言或框架处理。

  • 反向代理服务器
  • 实现负载均衡
  • 虚拟主机

fastcgi 与 cgi 的区别?

1)cgi

web 服务器会根据请求的内容,然后会 fork 一个新进程来运行外部 c 程序(或 perl 脚本…), 这个进程会把处理完的数据返回给
web 服务器,最后 web 服务器把内容发送给用户,刚才 fork 的进程也随之退出。如果下次用户还请求改动态脚本,那么 web
服务器又再次 fork 一个新进程,周而复始的进行。

2)fastcgi

web 服务器收到一个请求时,他不会重新 fork 一个进程(因为这个进程在 web 服务器启动时就开启了,而且不会退出),web
服务器直接把内容传递给这个进程(进程间通信,但 fastcgi 使用了别的方式,tcp 方式通信),这个进程收到请求后进行处理,把结果返回给 web 服务器,最后自己接着等待下一个请求的到来,而不是退出。

综上,差别在于是否重复 fork 进程,处理请求。
关于 Nginx 和 fastcgi 是如何运行的,可以看看 《Nginx + FastCGI运行原理》 。
同样,关于 cgi 可能也会存在 《php 面试题五之 nginx 如何调用 php 和 php-fpm 的作用和工作原理》 问题。

Nginx 常用命令?

  • 启动 nginx 。
  • 停止 nginx -s stop 或 nginx -s quit 。
  • 重载配置 ./sbin/nginx -s reload(平滑重启) 或 service nginx reload 。
  • 重载指定配置文件 .nginx -c /usr/local/nginx/conf/nginx.conf 。
  • 查看 nginx 版本 nginx -v 。
  • 检查配置文件是否正确 nginx -t 。
  • 显示帮助信息 nginx -h 。

Nginx 常用配置?

worker_processes  8; # 工作进程个数
worker_connections  65535; # 每个工作进程能并发处理(发起)的最大连接数(包含所有连接数)
error_log         /data/logs/nginx/error.log; # 错误日志打印地址
access_log      /data/logs/nginx/access.log; # 进入日志打印地址
log_format  main  '$remote_addr"$request" ''$status $upstream_addr "$request_time"'; # 进入日志格式

## 如果未使用 fastcgi 功能的,可以无视
fastcgi_connect_timeout=300; # 连接到后端 fastcgi 超时时间
fastcgi_send_timeout=300; # 向 fastcgi 请求超时时间(这个指定值已经完成两次握手后向fastcgi传送请求的超时时间)
fastcgi_rend_timeout=300; # 接收 fastcgi 应答超时时间,同理也是2次握手后
fastcgi_buffer_size=64k; # 读取 fastcgi 应答第一部分需要多大缓冲区,该值表示使用1个64kb的缓冲区读取应答第一部分(应答头),可以设置为fastcgi_buffers选项缓冲区大小
fastcgi_buffers 4 64k; # 指定本地需要多少和多大的缓冲区来缓冲fastcgi应答请求,假设一个php或java脚本所产生页面大小为256kb,那么会为其分配4个64kb的缓冲来缓存
fastcgi_cache TEST; # 开启fastcgi缓存并为其指定为TEST名称,降低cpu负载,防止502错误发生

listen       80; # 监听端口
server_name  rrc.test.jiedaibao.com; # 允许域名
root  /data/release/rrc/web; # 项目根目录
index  index.php index.html index.htm; # 访问根文件

Nginx 日志格式中的 $time_local 表示的是什么时间?请求开始的时间?请求结束的时间?其次,当我们从前到后观察日志中的 $time_local 时间时,有时候会发现时间顺序前后错乱的现象,请说明原因?
$time_local :在服务器里请求开始写入本地的时间。
因为请求发生时间有前有后,所以会时间顺序前后错乱。

Nginx 有哪些优点?

  • 跨平台、配置简单。
  • 非阻塞、高并发连接

处理 2-3 万并发连接数,官方监测能支持 5 万并发。

  • 内存消耗小

开启 10 个 Nginx 才占 150M 内存。

  • 成本低廉,且开源。
  • 稳定性高,宕机的概率非常小。

使用“反向代理服务器”的优点是什么?

反向代理服务器可以隐藏源服务器的存在和特征。它充当互联网云和 Web 服务器之间的中间层。这对于安全方面来说是很好的,特别是当我们使用 Web 托管服务时。

这里,先不考虑负载均衡。

什么是正向代理?

一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。

  • 客户端才能使用正向代理。
  • 正向代理总结就一句话:代理端代理的是客户端。例如说: 我们使用的翻墙软件,OpenVPN 等等。

什么是反向代理?

反向代理(Reverse Proxy)方式,是指以代理服务器来接受 Internet上的连接请求,然后将请求,发给内部网络上的服务器并将从服务器上得到的结果返回给 Internet 上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。
反向代理总结就一句话:代理端代理的是服务端。

请列举 Nginx 和 Apache 之间的不同点?

  • 轻量级,同样起 web 服务,Nginx 比 Apache 占用更少的内存及资源。
  • 抗并发,Nginx 处理请求是异步非阻塞的,而 Apache 则是阻塞型的,在高并发下 Nginx 能保持低资源低消耗高性能。
  • 最核心的区别在于 Apache 是同步多进程模型,一个连接对应一个进程;Nginx 是异步的,多个连接(万级别)可以对应一个进程。
  • Nginx 高度模块化的设计,编写模块相对简单。

LVS、Nginx、HAproxy 有什么区别?

  • LVS :是基于四层的转发。
  • HAproxy : 是基于四层和七层的转发,是专业的代理服务器。
  • Nginx :是 WEB 服务器,缓存服务器,又是反向代理服务器,可以做七层的转发。

Nginx 引入 TCP 插件之后,也可以支持四层的转发。

标签:面试题,请求,nginx,Nginx,进程,服务器,fastcgi
From: https://blog.csdn.net/gaozhi0/article/details/139764453

相关文章

  • nginx四层+七层分享代理实现与tomcat多实例动静分离
     实验架构图如下,最终实现负载均衡和动静分离:一、Tomcat多实例1.配置思路1)修改tomcat主配置文件server.xml中的三个端口号808080058009;2)修改tomcat启动停止脚本startup.shshutdown.sh,添加exportCATALINABASECATALINAHONETOWCATHOME变量都指向实例的工作......
  • Nginx优化与防盗链
    Nginx服务优化隐藏版本号为了防止攻击者不能通过nginx针对特定版本进行攻击方法1:修改配置文件方式[root@localhost~]#vim/usr/local/nginx/conf/nginx.confhttp{includemime.types;default_typeapplication/octet-stream;server_tokensoff;......
  • Nginx下载大文件超时配置和请求超时配置等
    https://blog.csdn.net/weixin_42949219/article/details/139354348 Nginx下载大文件超时配置和请求超时配置等location/download{......proxy_bufferingoff; proxy_connect_timeout180s; proxy_send_timeout180s; proxy_read_timeout180s; proxy_se......
  • Spark 面试题(十五)
    1.简述Spark怎么保证数据不丢失?Spark通过多种机制来确保数据的可靠性和不丢失,即使在发生节点故障或其他异常情况时。以下是Spark保证数据不丢失的一些关键策略:RDD的不变性:RDD是不可变的,每个RDD都记录了其创建的血统信息(Lineage),这允许Spark重新计算丢失的分区。数据......
  • Spark 面试题(十六)
    1.简述Spark运行时并行度的设置?在Spark中,“并行度”(Parallelism)通常指的是作业中同时执行的任务数量。这个数量决定了在任何给定时间可以有多少任务并发运行,进而影响作业的执行效率和资源利用。以下是设置Spark运行时并行度的一些关键点:默认并行度:如果没有明确设置,Spa......
  • 前端面试题-基础篇(一)
    最近在准备面试,搜集了一些偏基础的面试题,简单记录一下。1、列举一些常用的ES6新特性1、const、let(块级作用域{})不存在变量提升,不能在变量声明之前使用,且只在当前作用域有效,避免了全局命名冲突let用来声明变量,const用来声明常量,const声明的值不能被修改(对于引用类型,指的是......
  • 3、k8s-服务的部署(nginx)
    说明:pod是kubernetes的最小单元-而容器时运行在pod中的、服务是运行在容器中的、所以:pod>容器>服务  --(这是一个包含的关系) 1、创建部署nginx:kubectlcreatedeploymentnginx--image=nginx:1.14-alpine#kubectlcreatedeployment是一个Kubernetes命令,用于创建一个......
  • 5、k8s-资源管理-yaml语言--使用yaml语言创建nginx服务
    YAML语言是一个类似XML、JSON的标记性语言、他强调以数据为中心、而不是以标识语言为重点、因而YANL本身定义比较简单:对比如下XML语言:<html><age>15</age><address>hainan</address></html>YAML语言:heima:age:15address:hainanyaml语言没有过多的......
  • 前端面试题日常练-day75 【面试题】
    题目希望这些选择题能够帮助您进行前端面试的准备,答案在文末在Sass中,以下哪个功能用于生成带有浏览器前缀的CSS属性?a)@extendb)@mixinc)@importd)@includeSass中的函数(Function)用于什么目的?a)执行数学计算b)定义样式块c)导入外部文件d)引用父级选择器......
  • 2024hw蓝队面试题--5
    了解哪些中间件我了解的中间件有很多种,其中包括但不限于:Nginx、Apache、Tomcat、Redis、RabbitMQ、Kafka、Zookeeper等。常见漏洞有:未授权的访问、代码执行漏洞、配置错误、解析错误漏洞等漏洞struts2有哪些漏洞,有什么特征?远程代码执行漏洞:如S2-045,在该漏洞中,当开发者使用基......