日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Nginx >内容正文

Nginx

Nginx面试题总结

發(fā)布時間:2023/12/10 Nginx 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Nginx面试题总结 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1、什么是Nginx?

Nginx是一個 輕量級/高性能的反向代理Web服務(wù)器,他實現(xiàn)非常高效的反向代理、負載平衡,他可以處理2-3萬并發(fā)連接數(shù),官方監(jiān)測能支持5萬并發(fā),現(xiàn)在中國使用nginx網(wǎng)站用戶有很多,例如:新浪、網(wǎng)易、 騰訊等。

2、為什么要用Nginx?

  • 跨平臺、配置簡單、反向代理、高并發(fā)連接:處理2-3萬并發(fā)連接數(shù),官方監(jiān)測能支持5萬并發(fā),內(nèi)存消耗小:開啟10個nginx才占150M內(nèi)存 ,nginx處理靜態(tài)文件好,耗費內(nèi)存少
  • 而且Nginx內(nèi)置的健康檢查功能:如果有一個服務(wù)器宕機,會做一個健康檢查,再發(fā)送的請求就不會發(fā)送到宕機的服務(wù)器了。重新將請求提交到其他的節(jié)點上。
  • 使用Nginx的話還能:

? ? ? ? ? ? ? ? 1、節(jié)省寬帶:支持GZIP壓縮,可以添加瀏覽器本地緩存
? ? ? ? ? ? ? ? 2、穩(wěn)定性高:宕機的概率非常小
? ? ? ? ? ? ? ? 3、接收用戶請求是異步的

3、為什么Nginx性能這么高?

因為他的事件處理機制:異步非阻塞事件處理機制:運用了epoll模型,提供了一個隊列,排隊解決

4、為什么不使用多線程? ?

Nginx:采用單線程來異步非阻塞處理請求(管理員可以配置Nginx主進程的工作進程的數(shù)量),不會為每個請求分配cpu和內(nèi)存資源,節(jié)省了大量資源,同時也減少了大量的CPU的上下文切換,所以才使得Nginx支持更高的并發(fā)。

5、Nginx怎么處理請求的?

nginx接收一個請求后,首先由listen和server_name指令匹配server模塊,再匹配server模塊里的location,location就是實際地址

server { # 第一個Server區(qū)塊開始,表示一個獨立的虛擬主機站點listen 80; # 提供服務(wù)的端口,默認80server_name localhost; # 提供服務(wù)的域名主機名location / { # 第一個location區(qū)塊開始root html; # 站點的根目錄,相當于Nginx的安裝目錄index index.html index.htm; # 默認的首頁文件,多個用空格分開} }

6、什么是正向代理和反向代理?

正向代理就是一個人發(fā)送一個請求直接就到達了目標的服務(wù)器

反方代理就是請求統(tǒng)一被Nginx接收,nginx反向代理服務(wù)器接收到之后,按照一定的規(guī)則分發(fā)給了后端的業(yè)務(wù)處理服務(wù)器進行處理了

?正向代理服務(wù)器代理的是客戶端,而反向代理服務(wù)器代理的是服務(wù)端

7、使用反向代理服務(wù)器的優(yōu)點是什么?

反向代理服務(wù)器可以隱藏源服務(wù)器的存在和特征。它充當互聯(lián)網(wǎng)云和web服務(wù)器之間的中間層。這對于安全方面來說是很好的,特別是當您使用web托管服務(wù)時。

8、Nginx的優(yōu)缺點?

優(yōu)點:

? ? ? ? (1)占內(nèi)存小,可實現(xiàn)高并發(fā)連接,處理響應(yīng)快
? ? ? ? (2)可實現(xiàn)http服務(wù)器、虛擬主機、方向代理、負載均衡
? ? ? ? (3)Nginx配置簡單
? ? ? ? (4)可以不暴露正式的服務(wù)器IP地址
缺點:
????????動態(tài)處理差:nginx處理靜態(tài)文件好,耗費內(nèi)存少,但是處理動態(tài)頁面則很雞肋,現(xiàn)在一般前端用nginx作為反向代理抗住壓力

9、Nginx應(yīng)用場景?

  • http服務(wù)器。Nginx是一個http服務(wù)可以獨立提供http服務(wù)??梢宰鼍W(wǎng)頁靜態(tài)服務(wù)器。
  • 虛擬主機??梢詫崿F(xiàn)在一臺服務(wù)器虛擬出多個網(wǎng)站,例如個人網(wǎng)站使用的虛擬機。
  • 反向代理,負載均衡。當網(wǎng)站的訪問量達到一定程度后,單臺服務(wù)器不能滿足用戶的請求時,需要用多臺服務(wù)器集群可以使用nginx做反向代理。并且多臺服務(wù)器可以平均分擔負載,不會應(yīng)為某臺服務(wù)器負載高宕機而某臺服務(wù)器閑置的情況。
  • nginx?中也可以配置安全管理、比如可以使用Nginx搭建API接口網(wǎng)關(guān),對每個接口服務(wù)進行攔截。

10、Nginx目錄結(jié)構(gòu)有哪些?

[root@localhost ~]# tree /usr/local/nginx /usr/local/nginx ├── client_body_temp ├── conf # Nginx所有配置文件的目錄 │ ├── fastcgi.conf # fastcgi相關(guān)參數(shù)的配置文件 │ ├── fastcgi.conf.default # fastcgi.conf的原始備份文件 │ ├── fastcgi_params # fastcgi的參數(shù)文件 │ ├── fastcgi_params.default │ ├── koi-utf │ ├── koi-win │ ├── mime.types # 媒體類型 │ ├── mime.types.default │ ├── nginx.conf # Nginx主配置文件 │ ├── nginx.conf.default │ ├── scgi_params # scgi相關(guān)參數(shù)文件 │ ├── scgi_params.default │ ├── uwsgi_params # uwsgi相關(guān)參數(shù)文件 │ ├── uwsgi_params.default │ └── win-utf ├── fastcgi_temp # fastcgi臨時數(shù)據(jù)目錄 ├── html # Nginx默認站點目錄 │ ├── 50x.html # 錯誤頁面優(yōu)雅替代顯示文件,例如當出現(xiàn)502錯誤時會調(diào)用此頁面 │ └── index.html # 默認的首頁文件 ├── logs # Nginx日志目錄 │ ├── access.log # 訪問日志文件 │ ├── error.log # 錯誤日志文件 │ └── nginx.pid # pid文件,Nginx進程啟動后,會把所有進程的ID號寫到此文件 ├── proxy_temp # 臨時目錄 ├── sbin # Nginx命令目錄 │ └── nginx # Nginx的啟動命令 ├── scgi_temp # 臨時目錄 └── uwsgi_temp # 臨時目錄

11、Nginx配置文件nginx.conf有哪些屬性模塊?

worker_processes 1; # worker進程的數(shù)量 events { # 事件區(qū)塊開始worker_connections 1024; # 每個worker進程支持的最大連接數(shù) } # 事件區(qū)塊結(jié)束 http { # HTTP區(qū)塊開始include mime.types; # Nginx支持的媒體類型庫文件default_type application/octet-stream; # 默認的媒體類型sendfile on; # 開啟高效傳輸模式keepalive_timeout 65; # 連接超時server { # 第一個Server區(qū)塊開始,表示一個獨立的虛擬主機站點listen 80; # 提供服務(wù)的端口,默認80server_name localhost; # 提供服務(wù)的域名主機名location / { # 第一個location區(qū)塊開始root html; # 站點的根目錄,相當于Nginx的安裝目錄index index.html index.htm; # 默認的首頁文件,多個用空格分開} # 第一個location區(qū)塊結(jié)果error_page 500502503504 /50x.html; # 出現(xiàn)對應(yīng)的http狀態(tài)碼時,使用50x.html回應(yīng)客戶location = /50x.html { # location區(qū)塊開始,訪問50x.htmlroot html; # 指定對應(yīng)的站點目錄為html}} ......

12、Nginx虛擬主機怎么配置?

  • 基于域名的虛擬主機,通過域名來區(qū)分虛擬主機——應(yīng)用:外部網(wǎng)站
  • 基于端口的虛擬主機,通過端口來區(qū)分虛擬主機——應(yīng)用:公司內(nèi)部網(wǎng)站,外部網(wǎng)站的管理后臺

  • 基于ip的虛擬主機。

? ?(1)基于虛擬主機配置域名

需要建立/data/www /data/bbs目錄,windows本地hosts添加虛擬機ip地址對應(yīng)的域名解析;對應(yīng)域名網(wǎng)站目錄下新增index.html文件;

#當客戶端訪問www.lijie.com,監(jiān)聽端口號為80,直接跳轉(zhuǎn)到data/www目錄下文件server {listen 80;server_name www.lijie.com;location / {root data/www;index index.html index.htm;}}

? ?(2)基于端口的虛擬主機

使用端口來區(qū)分,瀏覽器使用域名或ip地址:端口號訪問

#當客戶端訪問www.lijie.com,監(jiān)聽端口號為8080,直接跳轉(zhuǎn)到data/www目錄下文件server {listen 8080;server_name 8080.lijie.com;location / {root data/www;index index.html index.htm;}}

???(3)基于ip的虛擬主機

#當客戶端訪問www.lijie.com,監(jiān)聽端口號為80直接跳轉(zhuǎn)到真實ip服務(wù)器地址 127.0.0.1:8080server {listen 80;server_name www.lijie.com;location / {proxy_pass http://127.0.0.1:8080;index index.html index.htm;}}

13、location的作用是什么?

location指令的作用是根據(jù)用戶請求的URI來執(zhí)行不同的應(yīng)用,也就是根據(jù)用戶請求的網(wǎng)站URL進行匹配,匹配成功即進行相關(guān)的操作。

? ? ?location的語法能說出來嗎?

注意:~ 代表自己輸入的英文字母

?

? ? ?Location正則案例

#優(yōu)先級1,精確匹配,根路徑location =/ {return 400;}#優(yōu)先級2,以某個字符串開頭,以av開頭的,優(yōu)先匹配這里,區(qū)分大小寫location ^~ /av {root /data/av/;}#優(yōu)先級3,區(qū)分大小寫的正則匹配,匹配/media*****路徑location ~ /media {alias /data/static/;}#優(yōu)先級4 ,不區(qū)分大小寫的正則匹配,所有的****.jpg|gif|png 都走這里location ~* .*\.(jpg|gif|png|js|css)$ {root /data/av/;}#優(yōu)先7,通用匹配location / {return 403;}

14、限流怎么做的?

  • Nginx限流就是限制用戶請求速度,防止服務(wù)器受不了

  • 限流有3種

  • 正常限制訪問頻率(正常流量)
  • 突發(fā)限制訪問頻率(突發(fā)流量)
  • 限制并發(fā)連接數(shù)
  • Nginx的限流都是基于漏桶流算法,底下會說道什么是桶銅流

?實現(xiàn)三種限流算法

(1)正常限制訪問頻率(正常流量):

  • 限制一個用戶發(fā)送的請求,我Nginx多久接收一個請求。
  • Nginx中使用ngx_http_limit_req_module模塊來限制的訪問頻率,限制的原理實質(zhì)是基于漏桶算法原理來實現(xiàn)的。在nginx.conf配置文件中可以使用limit_req_zone命令及l(fā)imit_req命令限制單個IP的請求處理頻率。
#定義限流維度,一個用戶一分鐘一個請求進來,多余的全部漏掉limit_req_zone $binary_remote_addr zone=one:10m rate=1r/m;#綁定限流維度server{location/seckill.html{limit_req zone=zone; proxy_pass http://lj_seckill;}}

?1r/s代表1秒一個請求,1r/m一分鐘接收一個請求, 如果Nginx這時還有別人的請求沒有處理完,Nginx就會拒絕處理該用戶請求

?(2)突發(fā)限制訪問頻率(突發(fā)流量):

  • 限制一個用戶發(fā)送的請求,我Nginx多久接收一個。
  • 上面的配置一定程度可以限制訪問頻率,但是也存在著一個問題:如果突發(fā)流量超出請求被拒絕處理,無法處理活動時候的突發(fā)流量,這時候應(yīng)該如何進一步處理呢?Nginx提供burst參數(shù)結(jié)合nodelay參數(shù)可以解決流量突發(fā)的問題,可以設(shè)置能處理的超過設(shè)置的請求數(shù)外能額外處理的請求數(shù)。我們可以將之前的例子添加burst參數(shù)以及nodelay參數(shù):
#定義限流維度,一個用戶一分鐘一個請求進來,多余的全部漏掉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 http://lj_seckill;}}

為什么就多了一個 burst=5 nodelay; 呢,多了這個可以代表Nginx對于一個用戶的請求會立即處理前五個,多余的就慢慢來落,沒有其他用戶的請求我就處理你的,有其他的請求的話我Nginx就漏掉不接受你的請求

?(3)限制并發(fā)連接數(shù)

Nginx中的ngx_http_limit_conn_module模塊提供了限制并發(fā)連接數(shù)的功能,可以使用limit_conn_zone指令以及l(fā)imit_conn執(zhí)行進行配置。接下來我們可以通過一個簡單的例子來看下:

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 / http://www.lijie.net permanent;}}

上面配置了單個IP同時并發(fā)連接數(shù)最多只能10個連接,并且設(shè)置了整個虛擬服務(wù)器同時最大并發(fā)數(shù)最多只能100個鏈接。當然,只有當請求的header被服務(wù)器處理后,虛擬服務(wù)器的連接數(shù)才會計數(shù)。剛才有提到過Nginx是基于漏桶算法原理實現(xiàn)的,實際上限流一般都是基于漏桶算法和令牌桶算法實現(xiàn)的。

15、漏桶流算法和令牌桶算法知道?
(1)漏桶算法

漏桶算法是網(wǎng)絡(luò)世界中流量整形或速率限制時經(jīng)常使用的一種算法,它的主要目的是控制數(shù)據(jù)注入到網(wǎng)絡(luò)的速率,平滑網(wǎng)絡(luò)上的突發(fā)流量。漏桶算法提供了一種機制,通過它,突發(fā)流量可以被整形以便為網(wǎng)絡(luò)提供一個穩(wěn)定的流量。也就是我們剛才所講的情況。漏桶算法提供的機制實際上就是剛才的案例:突發(fā)流量會進入到一個漏桶,漏桶會按照我們定義的速率依次處理請求,如果水流過大也就是突發(fā)流量過大就會直接溢出,則多余的請求會被拒絕。所以漏桶算法能控制數(shù)據(jù)的傳輸速率

?

(2)令牌桶算法

令牌桶算法是網(wǎng)絡(luò)流量整形和速率限制中最常使用的一種算法。典型情況下,令牌桶算法用來控制發(fā)送到網(wǎng)絡(luò)上的數(shù)據(jù)的數(shù)目,并允許突發(fā)數(shù)據(jù)的發(fā)送。Google開源項目Guava中的RateLimiter使用的就是令牌桶控制算法。令牌桶算法的機制如下:存在一個大小固定的令牌桶,會以恒定的速率源源不斷產(chǎn)生令牌。如果令牌消耗速率小于生產(chǎn)令牌的速度,令牌就會一直產(chǎn)生直至裝滿整個令牌桶。


?

16、為什么要做動靜分離?

  • Nginx是當下最熱的Web容器,網(wǎng)站優(yōu)化的重要點在于靜態(tài)化網(wǎng)站,網(wǎng)站靜態(tài)化的關(guān)鍵點則是是動靜分離,動靜分離是讓動態(tài)網(wǎng)站里的動態(tài)網(wǎng)頁根據(jù)一定規(guī)則把不變的資源和經(jīng)常變的資源區(qū)分開來,動靜資源做好了拆分以后,我們則根據(jù)靜態(tài)資源的特點將其做緩存操作。
  • 讓靜態(tài)的資源只走靜態(tài)資源服務(wù)器,動態(tài)的走動態(tài)的服務(wù)器
  • Nginx的靜態(tài)處理能力很強,但是動態(tài)處理能力不足,因此,在企業(yè)中常用動靜分離技術(shù)。
  • 對于靜態(tài)資源比如圖片,js,css等文件,我們則在反向代理服務(wù)器nginx中進行緩存。這樣瀏覽器在請求一個靜態(tài)資源時,代理服務(wù)器nginx就可以直接處理,無需將請求轉(zhuǎn)發(fā)給后端服務(wù)器tomcat。
  • 若用戶請求的動態(tài)文件,比如servlet,jsp則轉(zhuǎn)發(fā)給Tomcat服務(wù)器處理,從而實現(xiàn)動靜分離。這也是反向代理服務(wù)器的一個重要的作用。

? ? ?Nginx怎么做的動靜分離?

只需要指定路徑對應(yīng)的目錄。location/可以使用正則表達式匹配。并指定對應(yīng)的硬盤中的目錄。如下:(操作都是在Linux上)

server{listen 80;server_name ws.licaidie.top;location /image/ {root /usr/local/static/;autoindex on;} }

(1)創(chuàng)建目錄

mkdir /usr/local/static/image

(2)進入目錄

cd ?/usr/local/static/image

(3)放一張照片上去

1.jpg

(4)重啟 nginx

sudo nginx -s reload

(5)打開瀏覽器 輸入 server_name/image/1.jpg 就可以訪問該靜態(tài)圖片了?

17、Nginx負載均衡的算法怎么實現(xiàn)的?策略有哪些?

  • 為了避免服務(wù)器崩潰,大家會通過負載均衡的方式來分擔服務(wù)器壓力。將對臺服務(wù)器組成一個集群,當用戶訪問時,先訪問到一個轉(zhuǎn)發(fā)服務(wù)器,再由轉(zhuǎn)發(fā)服務(wù)器將訪問分發(fā)到壓力更小的服務(wù)器。

  • Nginx負載均衡實現(xiàn)的策略有以下五種:

(1)輪詢(默認)

每個請求按時間順序逐一分配到不同的后端服務(wù)器,如果后端某個服務(wù)器宕機,能自動剔除故障系統(tǒng)。

upstream backserver { server 192.168.0.12; server 192.168.0.13; }

(2)權(quán)重 weight

weight的值越大分配到的訪問概率越高,主要用于后端每臺服務(wù)器性能不均衡的情況下。其次是為在主從的情況下設(shè)置不同的權(quán)值,達到合理有效的地利用主機資源。

upstream backserver {?server 192.168.0.12 weight=2;?server 192.168.0.13 weight=8;? }?
  • 權(quán)重越高,在被訪問的概率越大,如上例,分別是20%,80%。

(3)ip_hash( IP綁定)

每個請求按訪問IP的哈希結(jié)果分配,使來自同一個IP的訪客固定訪問一臺后端服務(wù)器,并且可以有效解決動態(tài)網(wǎng)頁存在的session共享問題

upstream backserver {?ip_hash;?server 192.168.0.12:88;?server 192.168.0.13:80;? }?

(4)fair(第三方插件)

  • 必須安裝upstream_fair模塊。
  • 對比 weight、ip_hash更加智能的負載均衡算法,fair算法可以根據(jù)頁面大小和加載時間長短智能地進行負載均衡,響應(yīng)時間短的優(yōu)先分配。
upstream backserver {?server server1;?server server2;?fair;? }?
  • 哪個服務(wù)器的響應(yīng)速度快,就將請求分配到哪個服務(wù)器上。

(5)url_hash(第三方插件)

  • 必須安裝Nginx的hash軟件包
  • 按訪問url的hash結(jié)果來分配請求,使每個url定向到同一個后端服務(wù)器,可以進一步提高后端緩存服務(wù)器的效率。
upstream backserver {?server squid1:3128;?server squid2:3128;?hash $request_uri;?hash_method crc32;? }?

18、Nginx配置高可用性怎么配置?

當上游服務(wù)器(真實訪問服務(wù)器),一旦出現(xiàn)故障或者是沒有及時相應(yīng)的話,應(yīng)該直接輪詢到下一臺服務(wù)器,保證服務(wù)器的高可用

server {listen ? ? ? 80;server_name ?www.lijie.com;location / {### 指定上游服務(wù)器負載均衡服務(wù)器proxy_pass http://backServer;###nginx與上游服務(wù)器(真實訪問的服務(wù)器)超時時間 后端服務(wù)器連接的超時時間_發(fā)起握手等候響應(yīng)超時時間proxy_connect_timeout 1s;###nginx發(fā)送給上游服務(wù)器(真實訪問的服務(wù)器)超時時間proxy_send_timeout 1s;### nginx接受上游服務(wù)器(真實訪問的服務(wù)器)超時時間proxy_read_timeout 1s;index ?index.html index.htm;} }

19、Rewrite全局變量是什么?

20、nginx是如何實現(xiàn)高并發(fā)的?

簡單來講,就是: 異步,非阻塞,使用了epoll和大量的底層代碼優(yōu)化 nginx采用一個master進程,多個woker進程的模式。 1. master進程主要負責(zé)收集、分發(fā)請求。當一個請求過來時,master拉起一個worker進程負責(zé)處理這個請求。 2. master進程也要負責(zé)監(jiān)控woker的狀態(tài),保證高可靠性 3. woker進程一般設(shè)置為跟cpu核心數(shù)一致。nginx的woker進程跟apache不一樣。apche的進程在同一時間只能處理一個請求,所以它會開很多個進程,幾百甚至幾千個。而nginx的woker進程在同一時間可以處理額請求數(shù)只受內(nèi)存限制,因此可以處理多個請求。

21、nginx的四大功能是什么?

  • 正向代理????????在客戶端(瀏覽器)配置代理服務(wù)器,通過代理服務(wù)器進行互聯(lián)網(wǎng)訪問。
  • 反向代理? ? ? ??我們只需要將請求發(fā)送到反向代理服務(wù)器,由反向代理服務(wù)器去選擇目標服務(wù)器獲取數(shù)據(jù)后,在返回給客戶端 此時反向代理服務(wù)器和目標服務(wù)器對外就是一個服務(wù)器,暴露的是代理服務(wù)器地址,隱藏了真實服務(wù)器IP地址。
  • 負載均衡? ? ? ??單個服務(wù)器解決不了,我們增加服務(wù)器的數(shù)量,然后將請求分發(fā)到各個服務(wù)器上,將原先請求集中到單個服務(wù)器 上的情況改為將請求分發(fā)到多個服務(wù)器上,將負載分發(fā)到不同的服務(wù)器,也就是我們所說的負載均衡。
  • 動靜分離? ? ? ?為了加快網(wǎng)站的解析速度,可以把動態(tài)頁面和靜態(tài)頁面由不同的服務(wù)器來解析,加快解析速度。降低原來單個服務(wù)器的壓力

22、nginx和apache的區(qū)別?

  • 輕量級:同樣起web 服務(wù),nginx 比apache 占用更少的內(nèi)存及資源;
  • 抗并發(fā):nginx處理請求是異步非阻塞的,而apache 則是阻塞型的,在高并發(fā)下nginx 能保持低資源低消耗高性能;
  • 模塊化:nginx編寫模塊相對簡單;
  • IO事件模型:apache是同步多進程模型,一個連接對應(yīng)一個進程,阻塞;nginx是異步的,多進程單線程,異步非阻塞,多個連接(萬級別)可以對應(yīng)一個進程。
  • 功能豐富:Nginx提供負載均衡,可以做反向代理,前端服務(wù)器

?23、Nginx 常用命令有哪些?

  • 啟動????????nginx 。
  • 停止? ? ? ??nginx -s stop nginx -s quit 。
  • 重啟? ? ? ??nginx -s reload service nginx reload 。
  • 重載指定配置文件??.nginx -c /usr/local/nginx/conf/nginx.conf
  • 查看? ? ? ? nginx 版本 nginx -v 。

24、nginx報500、502、503、504 有什么區(qū)別?

  • 500: Internal Server Error 內(nèi)部服務(wù)錯誤,比如腳本錯誤,編程語言語法錯誤。
  • 502: Bad Gateway錯誤,網(wǎng)關(guān)錯誤。比如服務(wù)器當前連接太多,響應(yīng)太慢,頁面素材太多、帶寬慢。
  • 503: Service Temporarily Unavailable,服務(wù)不可用,web服務(wù)器不能處理HTTP請求,ip超頻訪問導(dǎo)致限流,或者 臨時超載或者是服務(wù)器進行停機維護。
  • 504: Gateway timeout 網(wǎng)關(guān)超時,程序執(zhí)行時間過長導(dǎo)致響應(yīng)超時,例如程序需要執(zhí)行20秒,而nginx最大響應(yīng)等待時間為10秒,這樣就會出現(xiàn)超時。

25、什么是C10K問題?

所謂c10k問題,指的是:服務(wù)器如何支持10k個并發(fā)連接,也就是concurrent 10000 connection(這也是c10k這個名字的由來),C10K問題是指無法同時處理大量客戶端(10,000)的網(wǎng)絡(luò)套接字。

?解決方案 :詳細請看:C10k問題簡述_愛思考的實踐者的博客-CSDN博客_c10k問題

  • 為每個連接分配一個獨立的線程/進程。
  • 同一個線程/進程同時處理多個連接(IO多路復(fù)用)

?26、nginx的七層負載均衡

四層負載均衡


所謂四層負載均衡是指OSI七層模型中的傳輸層, 那么傳輸層Nginx已經(jīng)支持TCP/IP的控制, 所以只需要對客戶端的請求進行TCP/IP協(xié)議的包轉(zhuǎn)發(fā)就可以實現(xiàn)負載, 那么他的好處是性能非??? 只需要底層進行應(yīng)用處理,而不需要進行一些復(fù)雜的邏輯.?

七層負載均衡


七層負載均衡是在應(yīng)用層,那么他可以完成后很多應(yīng)用方面的協(xié)議請求,
當然四層有四層的好處,七層七層的好處,四層就不支持協(xié)議的轉(zhuǎn)發(fā),(http,https,DNS等)只支持IP,但是它的速度快.
應(yīng)用層雖然沒有四層負載快,但是支持很多功能,比如說他支持http信息的改寫、頭部信息的改寫、(意識是,七層代理著用戶往后請求的時候把我們用戶請求的頭部信息加上,長連接協(xié)議也可以修改等)、安全應(yīng)用規(guī)則控制、URL匹配規(guī)則控制、以及轉(zhuǎn)發(fā)、rewrite等一些規(guī)則,所以在應(yīng)用層的服務(wù)里面,可以做的內(nèi)容就更多了。Nginx是一個典型的七層負載均衡

四層和七層的區(qū)別


四層負載均衡數(shù)據(jù)在底層就進行了分發(fā),而七層負載均衡數(shù)據(jù)包則是在最頂層進行分發(fā),由此可以看出,七層負載均衡效率沒有四層負載均衡高。
但是七層負載均衡更貼近于服務(wù),如HTTP協(xié)議就是七層協(xié)議,我們可以用Nginx可以作會話保持,URL路徑規(guī)則匹配,head頭改寫等等,這些都是四層負載均衡無法實現(xiàn)的。

注意:四層負載均衡不識別域名,七層負載均衡識別域名

?OSI七層模型

從低到高分別是:物理層、數(shù)據(jù)鏈路層、網(wǎng)絡(luò)層、傳輸層、會話層、表示層和應(yīng)用層。

  • 應(yīng)用層:網(wǎng)絡(luò)服務(wù)與最終用戶的一個接口,常見的協(xié)議有:HTTP FTP SMTP SNMP DNS.
  • 表示層:數(shù)據(jù)的表示、安全、壓縮。確保一個系統(tǒng)的應(yīng)用層所發(fā)送的信息可以被另一個系統(tǒng)的應(yīng)用層讀取。
  • 會話層:建立、管理、終止會話,對應(yīng)主機進程,指本地主機與遠程主機正在進行的會話.
  • 傳輸層:定義傳輸數(shù)據(jù)的協(xié)議端口號,以及流控和差錯校驗,協(xié)議有TCP UDP.
  • 網(wǎng)絡(luò)層:進行邏輯地址尋址,實現(xiàn)不同網(wǎng)絡(luò)之間的路徑選擇,協(xié)議有ICMP IGMP IP等.
  • 數(shù)據(jù)鏈路層:在物理層提供比特流服務(wù)的基礎(chǔ)上,建立相鄰結(jié)點之間的數(shù)據(jù)鏈路。
  • 物理層:建立、維護、斷開物理連接。

?OSI七層模型詳解_M10++的博客-CSDN博客_osi七層模型

總結(jié)

以上是生活随笔為你收集整理的Nginx面试题总结的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。