收藏 分销(赏)

2025春招Nginx面试题.pdf

上传人:唯嘉 文档编号:10287681 上传时间:2025-05-16 格式:PDF 页数:40 大小:932.79KB
下载 相关 举报
2025春招Nginx面试题.pdf_第1页
第1页 / 共40页
2025春招Nginx面试题.pdf_第2页
第2页 / 共40页
点击查看更多>>
资源描述
Nginx面试题 Nginx面试题1.Nginx的配置文件位于哪里?主要包括哪些内容?2.Nginx是否支持缓存?如果支持,如何配置缓存?3.Nginx如何限制客户端的访问速率和连接数?4.如何监控Nginx服务器的性能和状态?5.在配置Nginx时,如何设置基本的安全性?6.为什么要做动静分离?7.什么是Nginx?8.Nginx应用场景?9.为什么要用Nginx?10.location的作用是什么?11.限流怎么做的?12.什么是正向代理和反向代理?13.Nginx的优缺点?14.location的语法能说出来吗?15.漏桶流算法和令牌桶算法知道?漏桶算法令牌桶算法Nginx怎么做的动静分离?16.负载均衡轮询weight权重ip_hashleast_conn最少链接fairurl_hash17.Nginx配置高可用性怎么配置?Nginx怎么判断别IP不可访问?怎么限制浏览器访问?18、nginx和apache的区别?19、Nginx常用优化配置20、nginx是如何实现高并发的?21、什么是C10K问题?22、为什么不使用多线程?23、Nginx如何处理请求?24、nginx 请求合并25、用Nginx服务器解释-s的目的是什么?26、请陈述stub_status和sub_filter指令的作用是什么?27、Nginx是否支持将请求压缩到上游?28、解释如何在Nginx服务器上添加模块?29、请说明Nginx的负载均衡策略有哪些,分别适用于什么场景?30、请说明Nginx的缓存机制是如何工作的,有哪些常见的缓存策略?31、谈谈Nginx和Apache的区别和适用场景?32、如何实现Nginx的负载均衡?33、Nginx的反向代理是什么?如何配置反向代理?34、如何实现Nginx的动态模块加载?35、Nginx的事件驱动模型是怎样的?36.Nginx的rewrite指令的作用是什么?如何使用它进行URL重写?37.Nginx如何实现对特定文件类型的访问控制?38.在Nginx中,如何配置HTTPS以提高网站的安全性?39.Nginx的upstream模块中,如何配置健康检查机制?40.Nginx如何配置日志切割,以避免日志文件过大?1.Nginx的配置文件位于哪里?主要包括哪些内容?Nginx的配置文件位于/etc/nginx/nginx.conf。此外,配置文件也可以分散到不同的目录和文件中,主要包括以下内容:1.全局配置:包含user指令,定义Nginx进程运行的用户和用户组。包含worker_processes指令,定义Nginx工作进程的数量。包含error_log指令,定义错误日志的路径。2.Events配置:包含worker_connections指令,定义每个工作进程的并发连接数限制。可以配置其他与事件处理相关的指令,如use、multi_accept等。3.HTTP块配置:定义HTTP服务的全局配置,包括http块。可以包含server块,用于配置虚拟主机。可以包含location块,用于配置请求的处理规则。可以包含其他模块的配置指令,如gzip、proxy_pass、ssl等。4.Server块配置:配置一个虚拟主机,可以定义多个server块以支持多个站点。包含listen指令,定义监听的IP地址和端口。包含server_name指令,定义域名或IP地址。可以包含其他模块的配置指令,如location、root、index等。5.Location块配置:配置请求的处理规则,可以匹配不同的URI。可以定义root指令,指定文件资源的根路径。可以定义proxy_pass指令,用于反向代理到其他服务器。可以定义其他模块的配置指令,如try_files、rewrite等。需要注意的是,Nginx的配置是灵活可扩展的,可以根据具体需求进行定制。除了主配置文件nginx.conf外,还可以使用include指令引入其他配置文件,以便组织和管理配置内容。2.Nginx是否支持缓存?如果支持,如何配置缓存?是的,Nginx支持缓存。Nginx缓存主要是将访问过的文件或数据存储在内存中,以便下一次请求时可以更快地响应客户端。一般来说,Nginx缓存有两种类型:proxy缓存和fastcgi缓存。1.Proxy缓存当使用Nginx作为反向代理服务器时,可以通过配置proxy缓存来提高响应速度。具体可以按照以下步骤进行设置:在http块中添加proxy_cache_path指令,指定缓存目录和共享内存区。在server块中添加proxy_cache、proxy_cache_key、proxy_cache_valid等指令,定义缓存策略。例如,如下所示的代码片段配置了一个名为my_cache的缓存,有效期为10分钟,缓存目录为/var/cache/nginx:1.FastCGI缓存Nginx还支持FastCGI缓存,可用于加速对动态页面的响应。可以按照以下步骤进行设置:在http块中添加fastcgi_cache_path指令,指定缓存目录和共享内存区。在server块中添加fastcgi_cache、fastcgi_cache_key、fastcgi_cache_valid等指令,定义缓存策略。Copy Codehttp proxy_cache_path/var/cache/nginx levels=1:2 keys_zone=my_cache:10m inactive=60m;server listen 80;server_name localhost;location/proxy_cache my_cache;proxy_cache_key$scheme$request_method$host$request_uri;proxy_cache_valid 200 302 10m;proxy_cache_valid 404 1m;proxy_cache_use_stale error timeout invalid_header updating http_500 http_502 http_503 http_504;proxy_pass localhost:8080;例如,如下所示的代码片段配置了一个名为my_cache的缓存,有效期为10分钟,缓存目录为/var/cache/nginx:需要注意的是,配置Nginx缓存时,需要根据实际情况制定缓存策略,以确保缓存能够提高响应速度并避免缓存不必要的内容。此外,使用缓存还需要注意缓存的清理和更新问题,可以定期清空缓存或根据需要动态更新缓存。3.Nginx如何限制客户端的访问速率和连接数?Copy Codehttp fastcgi_cache_path/var/cache/nginx levels=1:2 keys_zone=my_cache:10m inactive=60m;server listen 80;server_name localhost;location .php$fastcgi_cache my_cache;fastcgi_cache_key$scheme$request_method$host$request_uri;fastcgi_cache_valid 200 302 10m;fastcgi_cache_valid 404 1m;fastcgi_cache_bypass$http_pragma;fastcgi_cache_revalidate on;fastcgi_index index.php;fastcgi_pass 127.0.0.1:9000;include fastcgi_params;Nginx提供了几种方式来限制客户端的访问速率和连接数。下面我将介绍两种常用的方法:使用limit_req模块和limit_conn模块。1.限制访问速率(使用limit_req模块):通过使用limit_req模块,你可以限制客户端请求的速率。这对于防止恶意请求或过多的请求对服务器造成压力非常有用。下面是一个简单的配置示例:在上述示例中:limit_req_zone指令创建一个名为one的共享内存区,用于存储IP地址的访问频率信息。limit_req指令应用于目标位置,限制每秒请求数不超过1个,并且将超出的请求放入一个大小为5的令牌桶中。1.限制连接数(使用limit_conn模块):Copy Codehttp limit_req_zone$binary_remote_addr zone=one:10m rate=1r/s;server listen 80;server_name;location/limit_req zone=one burst=5;proxy_pass backend;通过使用limit_conn模块,你可以限制客户端与服务器的连接数。这对于保护服务器免受过多的连接请求非常有用。下面是一个简单的配置示例:在上述示例中:limit_conn_zone指令创建一个名为addr的共享内存区,用于存储每个IP地址的连接数。limit_conn指令应用于目标位置,限制每个IP地址的最大连接数为10。需要注意的是,以上示例只是简单的配置示例。你可以根据实际需求进行更详细的配置,例如根据不同的URL路径、HTTP方法或其他条件来设置不同的限制。此外,还可以根据需要为不同的IP地址或IP地址段设置不同的访问速率和连接数限制。Copy Codehttp limit_conn_zone$binary_remote_addr zone=addr:10m;server listen 80;server_name;location/limit_conn addr 10;proxy_pass backend;4.如何监控Nginx服务器的性能和状态?要监控Nginx服务器的性能和状态,有几种常用的方法可以使用。下面是一些常见的监控方法:1.Nginx内置状态模块:Nginx提供了一个内置的状态模块,可以通过HTTP接口获取服务器的性能统计信息。要启用这个模块,需要在Nginx配置中添加以下内容:上述配置将在localhost/nginx_status路径下提供Nginx服务器的基本统计信息,只允许本地访问。1.第三方监控工具:可以使用第三方监控工具来监控Nginx服务器的性能和状态,例如:Copy Codehttp server listen 80;server_name localhost;location/nginx_status stub_status on;access_log off;allow 127.0.0.1;deny all;Prometheus:一个非常流行的开源监控系统,可以通过安装nginx_exporter来收集Nginx的指标数据。Grafana:一个开源的数据可视化和监控平台,可以与Prometheus等后端数据源结合使用,创建仪表盘并可视化Nginx服务器的性能指标。这些工具通常提供了更丰富的监控指标和可视化功能,使你能够更好地了解Nginx服务器的性能和状态。1.系统级监控工具:除了监控Nginx本身,还可以使用系统级监控工具来监控整个服务器,其中包括Nginx进程的性能指标和状态。一些常用的系统级监控工具有:Zabbix:一个功能强大的企业级监控解决方案,可以监控各种服务器和应用程序。Nagios:一个广泛使用的开源网络监控工具,可以监控服务器的可用性和性能。使用这些系统级监控工具,你可以监控服务器的CPU利用率、内存使用情况、网络流量等,并设置警报规则以便在发生故障或异常时及时通知。综上所述,以上是一些常见的监控Nginx服务器性能和状态的方法。选择适合自己需求的方法,并根据实际情况进行配置和部署。5.在配置Nginx时,如何设置基本的安全性?在配置Nginx时,可以采取一些基本的安全性措施来增强服务器的安全性。下面是一些常见的配置建议:1.使用HTTPS:启用HTTPS可以通过加密传输数据来提供更安全的通信。为了启用HTTPS,需要获取并安装有效的SSL/TLS证书,并对Nginx进行适当的配置以使用HTTPS协议。2.配置访问限制:通过配置Nginx的访问限制,可以限制特定IP地址或IP地址段的访问权限。使用allow和deny指令来设置白名单和黑名单,只允许特定的IP地址或IP地址范围进行访问。3.隐藏服务器版本号信息:默认情况下,Nginx会在响应头中包含服务器版本号信息,这可能使潜在攻击者了解到你使用的Nginx版本。为了隐藏这些敏感信息,可以通过server_tokens指令将服务器响应头中的版本号设置为off。4.启用防火墙:在Nginx服务器所在的主机上,启用适当的防火墙规则可以限制对服务器的未经授权访问。可以使用Linux的iptables或其他防火墙工具来实现。5.控制缓冲区大小:配置适当的缓冲区大小可以防止缓冲区溢出攻击。可以使用client_body_buffer_size和client_max_body_size来限制请求和响应的缓冲区大小。6.防止DDoS攻击:DDoS(分布式拒绝服务)攻击是通过向服务器发送大量请求来耗尽其资源,导致服务不可用。为了减轻这些攻击,可以使用Nginx的limit_req和limit_conn模块来限制每个客户端的请求速率和连接数。7.加强访问认证:如果你需要对某些URL或目录进行访问控制,可以使用Nginx的基本身份验证或令牌认证功能来要求用户进行身份验证。8.定期备份:定期备份Nginx配置、日志和其他重要文件是一种保护服务器数据的有效方式。这样,即使发生安全事件或系统故障,你也可以快速恢复。这些是一些设置Nginx时增强基本安全性的建议。根据个人需求和情况,还可以采取其他措施来提高服务器的安全性。需要注意的是,安全性是一个持续的过程,应该定期审查和更新安全配置以及及时应对新的安全威胁。6.为什么要做动静分离?Nginx是当下最热的Web容器,网站优化的重要点在于静态化网站,网站静态化的关键点则是是动静分离,动静分离是让动态网站里的动态网页根据一定规则把不变的资源和经常变的资源区分开来,动静资源做好了拆分以后,我们则根据静态资源的特点将其做缓存操作。让静态的资源只走静态资源服务器,动态的走动态的服务器Nginx的静态处理能力很强,但是动态处理能力不足,因此,在企业中常用动静分离技术。对于静态资源比如图片,js,css等文件,我们则在反向代理服务器nginx中进行缓存。这样浏览器在请求一个静态资源时,代理服务器nginx就可以直接处理,无需将请求转发给后端服务器tomcat。若用户请求的动态文件,比如servlet,jsp则转发给Tomcat服务器处理,从而实现动静分离。这也是反向代理服务器的一个重要的作用。7.什么是Nginx?Nginx是一个 轻量级/高性能的反向代理Web服务器,他实现非常高效的反向代理、负载平衡,他可以处理2-3万并发连接数,官方监测能支持5万并发,现在中国使用nginx网站用户有很多,例如:新浪、网易、腾讯等。8.Nginx应用场景?http服务器。Nginx是一个http服务可以独立提供http服务。可以做网页静态服务器。虚拟主机。可以实现在一台服务器虚拟出多个网站,例如个人网站使用的虚拟机。反向代理,负载均衡。当网站的访问量达到一定程度后,单台服务器不能满足用户的请求时,需要用多台服务器集群可以使用nginx做反向代理。并且多台服务器可以平均分担负载,不会应为某台服务器负载高宕机而某台服务器闲置的情况。nginz 中也可以配置安全管理、比如可以使用Nginx搭建API接口网关,对每个接口服务进行拦截。9.为什么要用Nginx?跨平台、配置简单、方向代理、高并发连接:处理2-3万并发连接数,官方监测能支持5万并发,内存消耗小:开启10个nginx才占150M内存,nginx处理静态文件好,耗费内存少,而且Nginx内置的健康检查功能:如果有一个服务器宕机,会做一个健康检查,再发送的请求就不会发送到宕机的服务器了。重新将请求提交到其他的节点上。同时还有如下优点:节省宽带:支持GZIP压缩,可以添加浏览器本地缓存稳定性高:宕机的概率非常小接收用户请求是异步的 10.location的作用是什么?location指令的作用是根据用户请求的URI来执行不同的应用,也就是根据用户请求的网站URL进行匹配,匹配成功即进行相关的操作。11.限流怎么做的?Nginx限流就是限制用户请求速度,防止服务器受不了限流有3种1.正常限制访问频率(正常流量)2.突发限制访问频率(突发流量)3.限制并发连接数Nginx的限流都是基于漏桶流算法,底下会说道什么是桶铜流正常限制访问频率(正常流量)限制一个用户发送的请求,我Nginx多久接收一个请求。Nginx中使用ngx_http_limit_req_module模块来限制的访问频率,限制的原理实质是基于漏桶算法原理来实现的。在nginx.conf配置文件中可以使用limit_req_zone命令及limit_req命令限制单个IP的请求处理频率。突发限制访问频率(突发流量)限制一个用户发送的请求,我Nginx多久接收一个。上面的配置一定程度可以限制访问频率,但是也存在着一个问题:如果突发流量超出请求被拒绝处理,无法处理活动时候的突发流量,这时候应该如何进一步处理呢?Nginx提供burst参数结合nodelay参数可以解决流量突发的问题,可以设置能处理的超过设置的请求数外能额外处理的请求数。我们可以将之前的例子添加burst参数以及nodelay参数:#定义限流维度,一个用户一分钟一个请求进来,多余的全部漏掉 limit_req_zone$binary_remote_addr zone=one:10m rate=1r/m;#绑定限流维度 server location/seckill.html limit_req zone=zone;proxy_pass lj_seckill;为什么就多了一个 burst=5 nodelay;呢,多了这个可以代表Nginx对于一个用户的请求会立即处理前五个,多余的就慢慢来落,没有其他用户的请求我就处理你的,有其他的请求的话我Nginx就漏掉不接受你的请求限制并发连接数 Nginx中的ngx_http_limit_conn_module模块提供了限制并发连接数的功能,可以使用limit_conn_zone指令以及limit_conn执行进行配置。接下来我们可以通过一个简单的例子来看下:#定义限流维度,一个用户一分钟一个请求进来,多余的全部漏掉 limit_req_zone$binary_remote_addr zone=one:10m rate=1r/m;#绑定限流维度 server location/seckill.html limit_req zone=zone burst=5 nodelay;proxy_pass lj_seckill;上面配置了单个IP同时并发连接数最多只能10个连接,并且设置了整个虚拟服务器同时最大并发数最多只能100个链接。当然,只有当请求的header被服务器处理后,虚拟服务器的连接数才会计数。刚才有提到过Nginx是基于漏桶算法原理实现的,实际上限流一般都是基于漏桶算法和令牌桶算法实现的。接下来我们来看看两个算法的介绍:12.什么是正向代理和反向代理?1.正向代理就是一个人发送一个请求直接就到达了目标的服务器2.反方代理就是请求统一被Nginx接收,nginx反向代理服务器接收到之后,按照一定的规 则分发给了后端的业务处理服务器进行处理了 http limit_conn_zone$binary_remote_addr zone=myip:10m;limit_conn_zone$server_name zone=myServerName:10m;server location/limit_conn myip 10;limit_conn myServerName 100;rewrite/permanent;13.Nginx的优缺点?优点:占内存小,可实现高并发连接,处理响应快可实现http服务器、虚拟主机、方向代理、负载均衡Nginx配置简单可以不暴露正式的服务器IP地址缺点:动态处理差:nginx处理静态文件好,耗费内存少,但是处理动态页面则很鸡肋,现在一般前端用nginx作为反向代理抗住压力,14.location的语法能说出来吗?示例如下:#优先级1,精确匹配,根路径 location=/return 400;15.漏桶流算法和令牌桶算法知道?#优先级2,以某个字符串开头,以av开头的,优先匹配这里,区分大小写 location /av root/data/av/;#优先级3,区分大小写的正则匹配,匹配/media*路径 location /media alias/data/static/;#优先级4,不区分大小写的正则匹配,所有的*.jpg|gif|png 都走这里 location*.*.(jpg|gif|png|js|css)$root /data/av/;#优先7,通用匹配 location/return 403;漏桶算法 漏桶算法是网络世界中流量整形或速率限制时经常使用的一种算法,它的主要目的是控制数据注入到网络的速率,平滑网络上的突发流量。漏桶算法提供了一种机制,通过它,突发流量可以被整形以便为网络提供一个稳定的流量。也就是我们刚才所讲的情况。漏桶算法提供的机制实际上就是刚才的案例:突发流量会进入到一个漏桶,漏桶会按照我们定义的速率依次处理请求,如果水流过大也就是突发流量过大就会直接溢出,则多余的请求会被拒绝。所以漏桶算法能控制数据的传输速率。令牌桶算法 令牌桶算法是网络流量整形和速率限制中最常使用的一种算法。典型情况下,令牌桶算法用来控制发送到网络上的数据的数目,并允许突发数据的发送。Google开源项目Guava中的RateLimiter使用的就是令牌桶控制算法。令牌桶算法的机制如下:存在一个大小固定的令牌桶,会以恒定的速率源源不断产生令牌。如果令牌消耗速率小于生产令牌的速度,令牌就会一直产生直至装满整个令牌桶。Nginx怎么做的动静分离?只需要指定路径对应的目录。location/可以使用正则表达式匹配。并指定对应的硬盘中的目录。如下:(操作都是在Linux上)location/image/root /usr/local/static/;autoindex on;1234创建目录mkdir/usr/local/static/image1进入目录cd /usr/local/static/image1放一张照片上去#1.jpg1重启 nginxsudo nginx-s reload1打开浏览器 输入 server_name/image/1.jpg 就可以访问该静态图片了 16.负载均衡 轮询 worker_processes 1;events worker_connections 1024;http include mime.types;default_type application/octet-stream;sendfile on;#tcp_nopush on;#keepalive_timeout 0;keepalive_timeout 65;#gzip on;upstream myserver server 192.168.3.201:8080;server 192.168.3.201:8081;server listen 80;server_name localhost;location/#启动验证 proxy_pass myserver;#error_page 404 /404.html;#redirect server error pages to the static page/50 x.html#error_page 500 502 503 504 /50 x.html;location=/50 x.html root html;weight权重 可以给每一台服务器设置一个权重,这样权重高的干的活也就会多一点ip_hash 这种方式是基于客户端的ip地址,采用hash算法计算下一个请求要选择哪一个服务器,这样固定的ip会访问同一个服务器,可以解决session问题#构建镜像docker build-t nginx_webapi.#启动项目docker run-d-p8080:80-v/home/nginx/Zhaoxi.WebApi/8080/appsettings.json:/app/appsettings.json-name nginx_webapi8080 nginx_webapi#启动项目docker run-d-p8081:80-v/home/nginx/Zhaoxi.WebApi/8081/appsettings.json:/app/appsettings.json-name nginx_webapi8081 nginx_webapi#192.168.3.201:8090/get upstream myserver server 192.168.3.201:8080 weight=5;server 192.168.3.201:8081 weight=10;least_conn最少链接 会将下一个请求分发到当前链接数最少的一台服务器fair 按后端服务器的响应时间来分配请求,响应时间短的优先分配。upstream myserver ip_hash;server 192.168.3.201:8080;server 192.168.3.201:8081;upstream myserver least_conn;server 192.168.3.201:8080;server 192.168.3.201:8081;upstream myserver fair;server 192.168.3.201:8080;server 192.168.3.201:8081;url_hash 按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器 资源集群服务器,缓存文件,文件存储在第三发服务,则可以缓存到本地服务器17.Nginx配置高可用性怎么配置?当上游服务器(真实访问服务器),一旦出现故障或者是没有及时相应的话,应该直接轮训到下一台服务器,保证服务器的高可用Nginx配置代码:upstream myserver hash$request_uri;server squid1:3128;server squid2:3128;server listen 80;server_name ;location/#指定上游服务器负载均衡服务器 proxy_pass backServer;#nginx与上游服务器(真实访问的服务器)超时时间 后端服务器连接的超时时间_发起握手等候响应超时时间 proxy_connect_timeout 1s;#nginx发送给上游服务器(真实访问的服务器)超时时间Nginx怎么判断别IP不可访问?怎么限制浏览器访问?proxy_send_timeout 1s;#nginx接受上游服务器(真实访问的服务器)超时时间 proxy_read_timeout 1s;index index.html index.htm;#如果访问的ip地址为192.168.9.115,则返回403 if ($remote_addr=192.168.9.115)return 403;#不允许谷歌浏览器访问 如果是谷歌浏览器返回500 if($http_user_agent Chrome)return 500;18、nginx和apache的区别?轻量级,同样起web 服务,比apache 占用更少的内存及资源;抗并发,nginx处理请求是异步非阻塞的,而apache 则是阻塞型的,在高并发下nginx 能保持低资源低消耗高性能;高度模块化的设计,编写模块相对简单;最核心的区别在于apache是同步多进程模型,一个连接对应一个进程;nginx是异步的,多个连接(万级别)可以对应一个进程。19、Nginx常用优化配置 1.调整worker_processes指定Nginx需要创建的worker进程数量,刚才有提到worker进程数一般设置为和CPU核心数一致。2.调整worker_connections设置Nginx最多可以同时服务的客户端数。结合worker_processes配置可以获得每秒可以服务的最大客户端数。3.启动gzip压缩,可以对文件大小进行压缩,减少了客户端http的传输带宽,可以大幅度提高页面的加载速度。4.启用缓存,如果请求静态资源,启用缓存是可以大幅度提升性能的。20、nginx是如何实现高并发的?一个主进程,多个工作进程,每个工作进程可以处理多个请求,每进来一个request,会有一个worker进程去处理。但不是全程的处理,处理到可能发生阻塞的地方,比如向上游(后端)服务器转发request,并等待请求返回。那么,这个处理的worker继续处理其他请求,而一旦上游服务器返回了,就会触发这个事件,worker才会来接手,这个request才会接着往下走。由于web server的工作性质决定了每个request的大部份生命都是在网络传输中,实际上花费在server机器上的时间片不多。这是几个进程就解决高并发的秘密所在。即skoo所说的webserver刚好属于网络io密集型应用,不算是计算密集型。21、什么是C10K问题?C10K问题是指无法同时处理大量客户端(10,000)的网络套接字。22、为什么不使用多线程?答:Nginx:采用单线程来异步非阻塞处理请求(管理员可以配置Nginx主进程的工作进程的数量),不会为每个请求分配cpu和内存资源,节省了大量资源,同时也减少了大量的CPU的上下文切换,所以才使得Nginx支持更高的并发。23、Nginx如何处理请求?Nginx启动后,首先进行配置文件的解析,解析成功会得到虚拟服务器的ip和端口号,在主进程master进程中创建socket,对addrreuse选项进行设置,并将socket绑定到对应的ip地址和端口并进行监听。然后创建子进程worker进程,当客户端和Nginx进行三次握手,则可以创建成功与Nginx的连接。当有新的请求进入时,空闲的worker进程会竞争,当某一个worker进程竞争成功,则会得到这个已经成功建立连接的socket,然后创建ngx_connection_t结构体,接下来设置读写事件处理函数并添加读写事件用来与客户端进行数据交换。当请求结束Nginx或者客户端主动关闭连接,此时一个请求处理完毕。24、nginx 请求合并 当我们在浏览网页的时候,对浏览速度有一个重要的影响因素,就是浏览器的并发数量。并发数量简单通俗的讲就是,当浏览器网页的时候同时工作的进行数量。当然浏览器的并发请求数目限制是针对同一域名的,同一时间针对同一域名下的请求有一定数量限制,超过限制数目的请求会被阻塞。首先我们看下各个浏览器的并发连接数:安装第三方模块nginx-http-concat 合并访问:ip:port/static/css/?index.css,common.css25、用Nginx服务器解释-s的目的是什么?用于运行Nginx-s参数的可执行文件。26、请陈述stub_status和sub_filter指令的作用是什么?Stub_status指令:该指令用于了解Nginx当前状态的当前状态,如当前的活动连接,接受和处理当前读/写/等待连接的总数;Sub_filter指令:它用于搜索和替换响应中的内容,并快速修复陈旧的数据27、Nginx是否支持将请求压缩到上游?可以使用Nginx模块gunzip将请求压缩到上游。gunzip模块是一个过滤器,它可以对不支持“gzip”编码方法的客户机或服务器使用“内容编码:gzip”来解压缩响应。28、解释如何在Nginx服务器上添加模块?在编译过程中,必须选择Nginx模块,因为Nginx不支持模块的运行时间选择。29、请说明Nginx的负载均衡策略有哪些,分别适用于什么场景?Nginx的负载均衡策略包括轮询(round-robin)、权重(weight)、IP哈希(ip_hash)、最少连接(least_conn)等。轮询策略适用于均衡地分配请求至后端服务器;权重策略适用于不同服务器性能不均的情况;IP哈希策略适用于需要将同一IP的请求分发至同一台服务器;最少连接策略适用于需要将请求发送至连接数最少的服务器。30、请说明Nginx的缓存机制是如何工作的,有哪些常见的缓存策略?Nginx的缓存机制通过代理缓存和FastCGI缓存两种方式实现。代理缓存是将后端服务器返回的数据缓存在Nginx中,以减少对后端服务器的请求;FastCGI缓存是将FastCGI处理结果缓存在Nginx中,以减少对FastCGI进程的请求。常见的缓存策略包括按照URI、参数、请求头等不同条件进行缓存、设置过期时间、使用代理缓存有效期等。31、谈谈Nginx和Apache的区别和适用场景?Nginx是一个高性能的HTTP和反向代理服务器,它的主要优点是占用资源少、高并发能力强、配置简单,适合作为静态资源服务器或反向代理服务器。相比之下,Apache是一个功能强大的Web服务器,支持多种编程语言和模块,适合用于动态内容的处理。因此,Nginx适合处理高并发的静态资源请求,而Apache适合处理动态内容请求。32、如何实现Nginx的负载均衡?Nginx的负载均衡可以通过upstream模块来实现。首先在Nginx的配置文件中定义一个upstream块,指定多个后端服务器的IP地址和端口,然后在server块中使用proxy_pass指令将请求代理到upstream定义的后端服务器中。Nginx可以通过不同的负载均衡算法(如轮询、加权轮询、IP哈希等)来分配请求到不同的后端服务器上,实现负载均衡。33、Nginx的反向代理是什么?如何配置反向代理?Nginx的反向代理是指将外部请求转发到内部服务器的过程。通过配置Nginx的server块中的location指令,可以将请求代理到内部服务器的指定地址。例如,可以通过配置proxy_pass指令将所有以/api开头的请求代理到内部服务器的/api路径下。这样可以隐藏内部服务器的真实地址,提高安全性。34、如何实现Nginx的动态模块加载?Nginx的动态模块加载可以通过编译Nginx时指定-add-dynamic-module选项来实现。首先需要编写一个NGINX模块配置文件(config)来描述模块的编译规则和依赖关系,然后使用./configure命令时指定-add-dynamic-module=模块路径选项来编译Nginx。编译完成后,将生成的.so文件拷贝到Nginx的模块目录下,并在Nginx的配置文件中使用load_module指令加载动态模块。35、Nginx的事件驱动模型是怎样的?Nginx的事件驱动模型是基于epoll或select等系统调用来实现的。Nginx使用一个轮询器来监听多个连接上的事件,当有事件发生时,Nginx会调用相应的处理函数进行处理。Nginx的事件驱动模型采用异步非阻塞的方式处理请求,能够高效地处理大量并发连接,提高服务器的性能。36.Nginx的rewrite指令的作用是什么?如何使用它进行URL重写?rewrite指令的作用是实现URL的重写和跳转。它可以根据设定的规则对请求的URL进行修改,然后根据修改后的URL进行后续处理。使用rewrite指令时,通常在server块或location块中进行配置。其基本语法为rewrite flag;。其中,是用于匹配原始URL的正则表达式,是重写后的URL,flag是可选的标志位,常见的标志位有:last:停止处理当前的rewrite规则集,将重写后的URL重新提交到Nginx进行处理。br
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 通信科技 > 计算机应用

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服