1. 程式人生 > >linux運維工程師面試常見問題整理2--nginx相關

linux運維工程師面試常見問題整理2--nginx相關

文章目錄

1. nginx 優化

nginx常用優化內容主要包括如下內容:

1.隱藏版本資訊

2.隱藏nginx要修改的原始碼

3.更改nginx服務的預設使用者

4.降權啟動nginx

5.優化nginx程序個數

6.繫結不同的nginx程序到不同的CPU上

7.Nginx事件處理模型優化

8.調整nginx單個程序允許的客戶端最大連線數

9.配置nginx worker程序對打開啟檔案數

10.開啟高效檔案傳輸模式

11.Nginx gzip壓縮實現效能優化

12.編寫指令碼實現日誌輪詢

13.不記錄不需要的日誌

14.訪問日誌的許可權設定

15.根據副檔名限制程式和檔案訪問

16.禁止訪問指定目錄下的所有檔案和目錄

17.限制網站來源的IP訪問

18.配置nginx禁止非法域名解析訪問企業網站

19.nginx防爬蟲優化

20.控制nginx併發連線數量

2. nginx 模組有哪一些

nginx的模組從結構上分為3種:

核心模組:HTTP模組,EVENT模組,MAIL模組。

基礎模組:HTTPAccess模組,HTTP FastCGI模組,HTTP Proxy模組,HTTP Rewrite模組。

第三方模組:HTTP Upstream Hash模組,Notice模組,HTTP Access Key模組。 

從功能上分為3種:

Handles(處理器模組):直接處理請求,並進行輸出內容和修改headers資訊,Handles處理器模組一般只能有一個。

Filters(過濾器模組):對其他處理器模組輸出內容進行修改操作。最後由Nginx輸出。 

Proxies(代理類模組):與後端一些服務,比如FastCGI進行互動。實現服務代理和負載均衡等功能。

3. nginx 資料演算法有哪一些

如果記不住,請飛往 nginx4種負載均衡演算法速記及詳解

1.輪詢(預設):

每個請求按時間順序逐一分配到不同的後端伺服器,如果後端某臺伺服器宕機,則自動剔除故障機器,使使用者訪問不受影響

2.weight:

指定輪詢權重,weight值越大,分配到的機率就越高,主要用於後端每臺伺服器效能不均衡的情況。

3.ip_hash:

每個請求按訪問IP的雜湊結果分配,這樣每個訪客固定訪問一個後端伺服器,可以有效的解決動態網頁存在的session共享問題。

4.fair(第三方):

更智慧的一個負載均衡演算法,此演算法可以根據頁面大小和載入時間長短智慧地進行負載均衡,也就是根據後端伺服器的響應時間來分配請求,響應時間短的優先分配。如果想要使用此排程演算法,需要Nginx的upstream_fair模組。

5.url_hash(第三方):

按訪問URL的雜湊結果來分配請求,使每個URL定向到同一臺後端伺服器,可以進一步提高後端快取伺服器的效率。如果想要使用此排程演算法,需要Nginx的hash軟體包。

4. nginx 日誌需要怎麼進行切割

#!/bin/sh
   set -x
   logs_path="/usr/local/nginx/logs"
   oldlogs_path="/nginx_oldlogs/"

   for i in `ls $logs_path/* |grep -v nginx.pid |grep -v oldlogs`
   ​        do
   ​        mv "$i"  "$i"_${HOS}_$(date -d "yesterday" +"%Y%m%d")
   ​        mv "$i"_${HOS}_$(date -d "yesterday" +"%Y%m%d")  $oldlogs_path
   done

   #向nginx主程序發訊號重新開啟日誌
   nginx_pid= `ps -ef |grep nginx|grep master|awk '{print $1}'`
   kill -USR1 $nginx_pid
   /usr/local/nginx/sbin/nginx -t && /usr/local/nginx/sbin/nginx -s reload

   sleep 2
   #docker exec -it tengine  /usr/local/nginx/sbin/nginx -s reopen

   #sleep 1 

   #clear the expired logs
   cd $oldlogs_path
   #find ./ -mtime +90 -exec rm -rf {} \;
   echo "The old logfiles is deleted!!"

目的:對日誌進行管理,結合cron每天進行切割,
1.定義日誌的位置,及儲存的位置。
2.對日誌進行重新命名 移動到指定的位置
3.向nginx主程序發訊號重新開啟日誌
4.對舊的日誌進行刪除處理

5. nginx 怎麼自定義403錯誤介面

首先開啟nginx.conf檔案,在fastcgi_temp_file_write_size 128k; 下面新增

fastcgi_intercept_errors on;注意,包括;號

然後在需要定義的站點的裡面新增

error_page 403 = /403.htm;
例如:
複製程式碼 程式碼如下:

   server 
   { 
   listen 80; 
   server_name www.deepvps.com; 
   index index.html index.htm index.php; 
   error_page 403 = /403.htm; 
   include location.conf; 
   root /home/www/logs; 
   } 

記得403頁面放在站點的跟目錄下…

測試配置

   /usr/local/nginx/sbin/nginx -t 

沒錯誤就重啟nginx

   /etc/init.d/nginx restart 

BTW,其他頁面也是這樣定義

error_page 502 = /502.htm;

6. nginx 平滑重啟命令是什麼

重啟之前,需要確認Nginx配置檔案的語法是否正確,否則,Nginx不會載入新的配置檔案。

通過以下命令檢查配置檔案是否正確


/user/local/webserver/nginx/sbin/nginx –t –c

/user/local/webserver/nginx/conf/nginx.conf 

此時,就可以平滑重啟Nginx了,如下 :

 kill –HUP Nginx 主程序號 Kill – HUP‘/user/local/webserver/nginx/logs/nginx.pid’  

7. nginx 配置檢查命令有哪些

nginx -t命令

-t:測試配置檔案是否正確,在執行時需要重新載入配置的時候,此命令非常重要,用來檢測所修改的配置檔案是否有語法錯誤。

8. nginx 和apache 的區別有哪一些,各有什麼區別?

1. nginx 相對 apache 的優點:

  • 輕量級,同樣起web 服務,比apache 佔用更少的記憶體及資源
  • 抗併發,nginx 處理請求是非同步非阻塞的,而apache 則是阻塞型的,在高併發下nginx 能保持低資源低消耗高效能
  • 高度模組化的設計,編寫模組相對簡單
  • 社群活躍,各種高效能模組出品迅速啊

2.apache 相對nginx 的優點:

  • rewrite ,比nginx 的rewrite 強大
  • 模組超多,基本想到的都可以找到
  • 少bug ,nginx 的bug 相對較多
  • 超穩定

9. nginx 負載和 LVS 有什麼區別

LVS特點:
1.抗負載能力強,使用IP負載均衡技術,只做分發,所以LVS本身並沒有多少流量產生;
2.穩定性、可靠性好,自身有完美的熱備方案;(如:LVS+Keepalived)
3.應用範圍比較廣,可以對所有應用做負載均衡;
4.不支援正則處理,不能做動靜分離。
常用四種演算法:
1.rr:輪叫,輪流分配到後端伺服器;
2.wrr:權重輪叫,根據後端伺服器負載情況來分配;
3.lc:最小連線,分配已建立連線最少的伺服器上;
4.wlc:權重最小連線,根據後端伺服器處理能力來分配。

Nginx特點:
1.工作在7層,可以對做正則規則處理;(如:針對域名、目錄進行分流)
2.配置簡單,能ping通就能進行負載功能,可以通過埠檢測後端伺服器狀態,不支援url檢測;
3.抗高併發,採用epoll網路模型處理客戶請求;
4.只支援HTTP和EMail,應用範圍比較少;
5.nginx主要是HTTP和反向代理伺服器,低系統資源消耗。
常用四種演算法:
1.RR:(預設)輪詢,輪流分配到後端伺服器;
2.weight:根據後端伺服器效能分配;
3.ip_hash:每個請求按訪問ip的hash結果進行分配,併發小時合適,解決session問題;
4.fair:(擴充套件策略),預設不被編譯nginx核心,根據後端伺服器響應時間判斷負載情況,選擇最輕的進行處理。