web、keepalived、lvs、nginx 面試常問解析

三思博客發表於2024-03-28

web、keepalived、lvs、nginx 面試常問解析

1.nginx程式碼狀態代表啥意思 --(工作可以快熟定位故障)

200:伺服器正常響應
301:資源永久重定向
302:資源臨時重定向
403:訪問請求被禁止
404:伺服器找不到客戶端請求的資源
500:伺服器內部錯誤
502:代理伺服器從後端收到了一條偽響應;bad gateway

2.維護網站過程中遇到的問題

1.今天上傳了圖片時報了個:413錯誤,怎麼辦?


解答:nginx對上傳檔案大小有要求,預設1m,如果很大,還要適當調整上傳超時時間

命令:
client_max_body_size
限制請求體的大小,若超過所設定的大小,返回413錯誤




2.
504錯誤:請求後端服務的時候,後端服務很長時間才響應,

解答:檢視錯誤日誌後修改了proxy_read_timeout he proxy_read_time 完美解決



3.nginx出現訪問502, bad gateway頁面開啟慢的問題,如何處理

第一種情況:網站的訪問量大,而php—cgi的程序數偏少
針對這種情況的502錯誤,只需增加php-cgi的程序數,具體是修改/usr/local/php/etc/php-fpm.conf 檔案,將其中的max_children值適當增加,這個資料要依據你的vps或者獨立伺服器的配置進行設定,一般一個php-cgi程序佔20m記憶體,你可以自己計算下,適量增多

/usr/local/php/sbin/php-fpm restart 然後重啟一下.




第二種情況:cpu佔用率、記憶體佔用率非常高,遭到cc攻擊

解決方法:
1.就是利用本機的防火牆來解決可以安裝CSF之內的防火牆,這種的弊端是隻能防止小規模的CC攻擊和DDOS(我的站在阿里雲,所以不用太擔心DDOS)CC攻擊比較猛的話機器也直接CUP跑滿了。
2.是新增CDN,這種防止CC攻擊的方法是最好的,不過CDN一般都要錢,於是我找到一個https://www.yundun.cn/login,說是專門防CC DDOS的,其實也就是一個CDN,有免費的套餐,足夠我這小站用了






第三種情況
cpu佔用率不高,記憶體溢位

檢查一下網站有沒有問題?一般小偷站點常常會出現記憶體溢位
檢查一下/var/log/目錄下的日誌,看看是不是有人爆破ssh和ftp埠?
ssh ftp遭到窮舉也會佔用大量記憶體,是的話,改掉ssh埠和ftp埠即可



簡單版思路解決
從fastcgi配置入手


1.檢視fastcgi程序是否已經啟動


2.檢查系統fastcgi程序執行情況


3.fastcgi執行時間過長


4.頭部太大





詳細版配置解決:

1.檢視fastcgi程序是否已經啟動
NGINX 502錯誤的含義是sock、埠沒被監聽造成的。我們先檢查fastcgi是否在執行

2.檢查系統Fastcgi程序執行情況

除了第一種情況,fastcgi程序數不夠用、php執行時間長、或者是php-cgi程序死掉也可能造成nginx的502錯誤
執行以下命令判斷是否接近FastCGI程序,如果fastcgi程序數接近配置檔案中設定的數值,表明worker程序數設定太少
netstat -anpo | grep "php-cgi" | wc -l

3.FastCGI執行時間過長

根據實際情況調高以下引數值
fastcgi_connect_timeout 300; fastcgi_send_timeout 300; fastcgi_read_timeout 300;

4.頭部太大

nginx和apache一樣,有前端緩衝限制,可以調整緩衝引數
fastcgi_buffer_size 32k; fastcgi_buffers 8 32k;
如果你使用的是nginx的負載均衡Proxying,調整
proxy_buffer_size 16k; proxy_buffers 4 16k;

5.https轉發配置錯誤

正確的配置方法

server_name www.111cn.net; location /myproj/repos { set $fixed_destination $http_destination; if ( $http_destination ~* ^https(.*)$ ) { set $fixed_destination http$1; } proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header Destination $fixed_destination; proxy_pass http://subversion_hosts; }





  1. 你們公司的出口頻寬?每天網站pv uv?
頻寬:100M
pv:100w
uv:5w



5.nginx動靜分離配置過嗎?tomcat多例項真麼配置 ? expires指令含義?

nginx動靜分離
配置過
最終實現效果:nginx處理靜態頁面,php處理動態頁面
1.建立兩個server塊(或location塊)。
2.對於靜態資源(如HTML、CSS、JS、圖片等),在其中一個server或location中設定根目錄指向靜態檔案存放路徑,並設定相應訪問規則。
3.對於動態請求(如PHP、Java、Python等介面或頁面請求),在另一個server或location中配置proxy_pass指令,將其轉發至後端應用伺服器地址。
4.根據請求型別(通常依據URL或副檔名判斷),透過正規表示式或其他匹配規則,讓Nginx區分並分別應用上述配置。





Tomcat多例項:可以不同埠號,多虛擬主機,自定義web應用訪問位置  想要多例項  在編譯安裝一次tomcat就行,
只不過和第一個tomcat的路徑不同,埠不同
Exprires:設定靜態檔案過期時間



expires指令含義?
用於設定HTTP響應頭中的"Expires"和"Cache-Control"欄位,從而控制客戶端快取(如瀏覽器)對靜態資源的快取策略

作用:
"expires"指令設定靜態資源快取過期時間,影響HTTP快取策略。以此來提高使用者訪問速度,減少伺服器負載





4.location過濾的優先順序?

第一優先順序:等號型別(=)的優先順序最高。一旦匹配成功,則不再查詢其他匹配項。
第二優先順序:^~型別表示式。一旦匹配成功,則不再查詢其他匹配項。
第三優先順序:正規表示式型別(~ ~*)的優先順序次之。如果有多個location的正則能匹配的話,則使用正規表示式
最長的那個。
第四優先順序:常規字串匹配型別。按字首匹配。

5.nginx重定向,重寫URL

URL重寫有利於網站首選域的確定,對於同一資源頁面多條路徑的301重定向有助於URL權重的集中
rewrite  

6.LVS的演算法有哪幾個,你們用的是哪個?

靜態演算法:只是根據演算法進行排程並不考慮後端REALSERVER的實際連線情況
rr-論調演算法,假如有兩臺伺服器A,B,第一個請求給A,第二個給B,第三個給A依次往復
Wrr 
-加權論調,假如有兩臺伺服器A,B,A的效能是B的兩倍,則在論調的同時給A上面分配的請求也大致會是B上面的兩倍
動態演算法:前端的排程器會根據後端REALSERVER的實際連線情況來分配請求
活動連結:當前有資料包傳輸
非活動連結:當前連線出於建立狀態但是沒有資料傳輸

7.NGINX有幾種工作模式,都是哪幾種?

master-worker模式和單程序模式

8.nginx最佳化怎麼做的

  1. 使用epoll模型
  2. 提高程序數、開啟連線數
  3. 啟用gzip壓縮傳輸
  4. 為靜態檔案啟用快取
  5. Timeouts設定

9.nginx日常引數最佳化? 動靜分離做過嗎 描述簡單步驟?

gzip壓縮最佳化 事件模型最佳化,檔案描述符最佳化,防盜鏈,隱藏版本資訊,ssl最佳化,http請求方法,防止ddos單ip併發連線的控制,
與連線速率控制

動靜分離:server新增location模組,定義一下以什麼結尾的檔案不記錄在日誌,expires,客戶端可以快取靜態資料的時間,
重啟一下nginx,在次訪問location定義的檔案,就不寫入日誌了

10.nginx做了哪些最佳化

  1. 執行緒數
  2. 使用epoll模型非同步非阻塞
  3. 壓縮傳輸
  4. 快取
  5. 連線超時時間
  6. 非法域名訪問
  7. 防盜鏈
  8. 隱藏nginx版本資訊
  9. 優雅頁面展示
  10. 防止DDOS

11.網站出現500,502,400,403,404都是什麼意思,怎麼排查和解決

400:錯誤請求,伺服器不理解請求的語法。這可能是使用者發起的請求不合理,需要檢查客戶端的請求。

403:伺服器拒絕請求。檢查伺服器配置,是不是對客戶端做了限制。

12.有一web伺服器,某天某使用者投訴上某個網站速度很慢,如果你是伺服器的管理員,請問你如何查詢原因。假設伺服器有任意作業系統和軟體。

答:1、首先檢測伺服器狀態,排除硬體故障和系統故障 排除機器故障
    2、檢查底層網路狀態(包括互聯情況,PING包延遲、流量情況)排除網路故障和網路卡等裝置故障。
    3、檢查WEB伺服器軟體執行情況(併發連線、服務軟體配置情況、資料庫連線情況等)排除應用服務故障。

13.實戰nginx最佳化方面:使用者訪問網站如果出現404或者502頁面 自動跳轉開啟 維護中頁面 weihu.html

#修改nginx配置檔案
vim /usr/local/nginx/conf/nginx.conf

#新增到域名www.it.com,server{}段中,定義維護頁面:
error_page 404 502 /weihu.html;
location = /weihu.html {
}

14.你用過nginx的哪些模組



1. ngx_http_gzip_module - GZIP壓縮模組
2. ngx_http_proxy_module - HTTP代理模組
3. ngx_http_rewrite_module - URL重寫模組
4. ngx_http_limit_conn_module - 連線限制模組
5. ngx_http_log_module - 訪問日誌模組
6. ngx_upstream - 上游伺服器模組(雖然它不是一個完整的模組名稱,但在Nginx中,“upstream”是一個關鍵概念,ngx_http_upstream_module是用於定義一組後端伺服器的模組,實現負載均衡和故障轉移等功能)

15.nginx 狀態碼 499是什麼意思

服務端處理時間過長,客戶端主動關閉了連線

16.fastcgi和cgi有什麼區別

Cgi:
web伺服器接受到請求,然後根據內容,fork一個新程序,這個程序會把處理完的資料
返回給web伺服器
這就是fastcgi:

web伺服器收到一個請求時,他不會重新fork一個程序(因為這個程序在web
伺服器啟動時就開啟了,而且不會退出),web伺服器直接把內容傳遞給這個
程序,這個程序收到請求後進行處理,把結果返回給web伺服器,最後自己接著
等待下一個請求的到來,而不是退出。 

17.寫出LVS與nginx的區別

Lvs優勢:抗負載能力很強、工作穩定、無流量
Nginx:nginx工作第7層,針對是http應用本身分流,lvs沒有這個功能
Nginx 對網路依賴很小,nginx安裝簡單也穩定,流量小於日pv 1000萬 nginx足以
故障處理任務:

18.網站訪問慢怎麼排查 如何解決?

1 公司web 伺服器 突然 掛了,或者伺服器被攻擊了,如何快速解決 模擬實戰 可以算是個專案經驗面試問道 處理過什麼故障
都可以用這個

1、首先要確定是使用者端還是服務端的問題。當接到使用者反饋訪問慢,那邊自己立即訪問網站看看,如果自己這邊訪問快,
基本斷定是使用者端問題,就需要耐心跟客戶解釋,協助客戶解決問題。

2、如果訪問也慢,那麼可以利用瀏覽器的除錯功能,看看載入那一項資料消耗時間過多,是圖片載入慢,還是某些資料載入慢。

3、針對伺服器負載情況。檢視伺服器硬體(網路、CPU、記憶體)的消耗情況。如果是購買的雲主機,比如阿里雲,可以登入
阿里雲平臺提供各方面的監控,比如 CPU、記憶體、頻寬的使用情況。

4、如果發現硬體資源消耗都不高,那麼就需要透過查日誌,比如看看 MySQL慢查詢的日誌,看看是不是某條 SQL 語句查詢慢
,導致網站訪問慢。
怎麼去解決?
1、如果是出口頻寬問題,那麼久申請加大出口頻寬。
2、如果慢查詢比較多,那麼就要開發人員或 DBA 協助進行 SQL 語句的最佳化。
3、如果資料庫響應慢,考慮可以加一個資料庫快取,如 Redis 等等。然後也可以搭建MySQL 主從,一臺 MySQL 伺服器負責寫,
其他幾臺從資料庫負責讀。
4、申請購買 CDN 服務,載入使用者的訪問。
5、如果訪問還比較慢,那就需要從整體架構上進行最佳化咯。做到專角色專用,多臺伺服器提供同一個服務

19.keepalived 腦裂怎麼解決 面試和工作 會遇到

1.同時使用序列電纜和乙太網電纜連線,同時用兩條心跳線路,這樣一條線路壞了,另一個還是好的,依然能傳送心跳訊息。

2.當檢測到裂腦時強行關閉一個心跳節點(這個功能需特殊裝置支援,如Stonith、feyce)。相當於備節點接收不到心跳消患,
透過單獨的線路傳送關機命令關閉主節點的電源。

3.做好對裂腦的監控報警,編寫告警指令碼(如郵件及手機簡訊等或值班).在問題發生時人為第一時間介入仲裁,降低損失。例如,
百度的監控報警短倍就有上行和下行的區別。報警訊息傳送到管理員手機上,
管理員可以透過手機回覆對應數字或簡單的字串操作返回給伺服器.讓伺服器根據指令自動處理相應故障,
這樣解決故障的時間更短.
參考文件:https://blog.csdn.net/qq_47855463/article/details/119790396

20.簡單介紹一下您所知道的減少和加速web伺服器的請求的方法。

A. 針對靜態的訪問,做過期時間,把靜態檔案快取在客戶端上

B. 在前端搭建squid反向代理,把靜態的檔案快取在squid上

C. 接入CDN

D. 合併js、css以及小圖片

21.lvs與nginx負載均衡的區別?

1)nginx工作在網路的七層,所以他可以針對http應用本身來做分流策略,比如針對域名,目錄等,而lvs並不具備
這些功能,所以nginx這點可利用的地方就多餘lvs,但因為這些功能使其調整度高於lvs,需要經常觸碰,觸碰多了,
出問題的機率就會增加,而lvs配置性不高,沒有太多的可配置選項,除了增減伺服器,並不需要經常去觸碰他,
大大減少人為出錯。

2)nginx對網路的依賴性比較小,理論上只要能ping通,網頁訪問正常,nginx就能連的通,lvs比較依賴於網路環境,
至少需要一個公網ip來做VIP

3)nginx測試可以檢視錯誤日誌,而lvs出錯,很多都是網路問題,沒有錯誤日誌,解決比較麻煩

4)nginx可以檢測到伺服器內部的故障,比如根據伺服器處理網頁返回的狀態碼、超時等等,並且會把返回錯誤的請求
重新提交到另一個節點。lvs的原理使其不能重發請求。比如使用者正在上傳一個檔案,而處理該上傳的節點剛 好在上傳
過程中出現故障,nginx會把上傳切到另一臺伺服器重新處理,而lvs就直接斷掉了

22.apache與nginx的區別?

1)nginx 輕量級,同樣web 服務,比apache 佔用更少的記憶體及資源 抗高併發能力大約是apache的10倍以上,
nginx 處理請求是非同步非阻塞的,而apache 則是阻塞型的,在高併發下nginx 能保持低資源低消耗高效能

2)nginx的靜態處理效能力比apache強,nginx處理動態不行,一般動態請求要apache去做,nginx只適合靜態和反向,

3)核心區別,apache是同步多程序,一個連線對應一個程序,nginx是非同步的,很多很多個連線可以對應一個程序

23.Nginx和lvs負載均衡比較

1)lvs的特點:

A. 抗負載能力強,因為lvs工作方式的邏輯是非常之簡單,而且工作在網路4層僅做請求分發之用,沒有流量,
所以在效率上基本不需要太過考慮。在我手裡的 lvs,僅僅出過一次問題:在併發最高的一小段時間內均衡器出現
丟包現象,據分析為網路問題,即網路卡或linux2.4核心的承載能力已到上限,記憶體和 cpu方面基本無消耗。

B. 配置性低,這通常是一大劣勢,但同時也是一大優勢,因為沒有太多可配置的選項,所以除了增減伺服器,
並不需要經常去觸碰它,大大減少了人為出錯的機率。

C. 工作穩定,因為其本身抗負載能力很強,所以穩定性高也是順理成章,另外各種lvs都有完整的雙機熱備方案,
所以一點不用擔心均衡器本身會出什麼問題,節點出現故障的話,lvs會自動判別,所以系統整體是非常穩定的。

D. 無流量,上面已經有所提及了。lvs僅僅分發請求,而流量並不從它本身出去,所以可以利用它這點來做一些線路
分流之用。沒有流量同時也保住了均衡器的IO效能不會受到大流量的影響。

E. 基本上能支援所有應用,因為lvs工作在4層,所以它可以對幾乎所有應用做負載均衡,包括http、資料庫、聊天室
等等。

另:lvs也不是完全能判別節點故障的,譬如在wlc分配方式下,叢集裡有一個節點沒有配置VIP,會使整個叢集不能使
用,這時使用wrr分配方式則會丟掉一臺機。目前這個問題還在進一步測試中。所以,用lvs也得多多當心為妙。

  1. Nginx的特點是:

A. 工作在網路的7層之上,可以針對http應用做一些分流的策略,比如針對域名、目錄結構,它的正則規則比HAProxy
更為強大和靈活,這也是它目前廣泛流行的主要原因之一,Nginx單憑這點可利用的場合就遠多於LVS了。

B. Nginx對網路穩定性的依賴非常小,理論上能ping通就就能進行負載功能,這個也是它的優勢之一;相反LVS對網路
穩定性依賴比較大,這點本人深有體會;

C. Nginx安裝和配置比較簡單,測試起來比較方便,它基本能把錯誤用日誌列印出來。LVS的配置、測試就要花比較長的
時間了,LVS對網路依賴比較大。

D. 可以承擔高負載壓力且穩定,在硬體不差的情況下一般能支撐幾萬次的併發量,負載度比LVS相對小些。

E. Nginx可以透過埠檢測到伺服器內部的故障,比如根據伺服器處理網頁返回的狀態碼、超時等等,並且會把返回錯誤
的請求重新提交到另一個節點,不過其中缺點就是不支援url來檢測。比如使用者正在上傳一個檔案,而處理該上傳的節點
剛好在上傳過程中出現故障,Nginx會把上傳切到另一臺伺服器重新處理,而LVS就直接斷掉了,如果是上傳一個很大的
檔案或者很重要的檔案的話,使用者可能會因此而不滿。

F. Nginx不僅僅是一款優秀的負載均衡器/反向代理軟體,它同時也是功能強大的Web應用伺服器。LNMP也是近幾年
非常流行的web架構,在高流量的環境中穩定性也很好。

G. Nginx現在作為Web反向加速快取越來越成熟了,速度比傳統的Squid伺服器更快,可以考慮用其作為反向代理
加速器。

H. Nginx可作為中層反向代理使用,這一層面Nginx基本上無對手,唯一可以對比Nginx的就只有lighttpd了,
不過lighttpd目前還沒有做到Nginx完全的功能,配置也不那麼清晰易讀,社群資料也遠遠沒Nginx活躍。

I. Nginx也可作為靜態網頁和圖片伺服器,這方面的效能也無對手。還有Nginx社群非常活躍,第三方模組也很多。

J. Nginx新版本已經支援代理tcp各種協議,不再僅僅侷限在代理http、https以及email。

24.php最佳化引數有哪些,fastcgi設定是多少,動態還是靜態?

A. php.ini安全配置,禁掉危險的函式

disable_functions(exec,system,passthru,error_log,ini_alter,dl,openlog,syslog,readlink,    symlink,link,leak,fsockopen,proc_open,popepassthru,chroot,scandir,    chgrp,chown,escapeshellcmd,escapeshellarg,shell_exec,proc_get_status,popen)

B. php.ini配置日誌

display_errors =   預設Off    [On]  開啟錯誤日誌

error_log=/usr/local/php/logs/php_errors.log

error_reporting=E_ALL & ~E_NOTICE

C. Php.ini中定義open_basedir = /data/www:/tmp    白名單目錄

D. Php-fpm.conf中配置慢執行日誌

E. Php-fpm.conf定義max_children

F. 問題中的fastcgi指的就是這個fpm配置,最大程序數(max_children)為300,動態(dynamic)

TIME_WAIT: 表示收到了對方的FIN報文,併傳送出了ACK報文,就等2MSL後即可回到CLOSED可用狀態了。
如果FIN_WAIT_1狀態下,收到了對方同時帶 FIN標誌和ACK標誌的報文時,可以直接進入到TIME_WAIT狀態,
而無須經過FIN_WAIT_2狀態。

25.PHP-FPM的配置

1、程序數

pm = static // 使用方式;還有一個dynamic(動態)

pm.max_children = 300 // 靜態方式下開啟的php-fpm程序數量
pm.start_servers = 20 // 動態方式下的起始php-fpm程序數量
pm.min_spare_servers = 5 // 動態方式下的最小php-fpm程序數
pm.max_spare_servers = 30 // 動態方式下的最大php-fpm程序數量

關於選擇靜態還是動態
對於記憶體大的伺服器(比如8G以上)來說,指定靜態的max_children實際上更為妥當,因為這樣不需要進行額外的程序數目控制,會提高效率。
對於小記憶體的伺服器來說,比如256M記憶體的VPS,選擇動態比較好,因為動態方式會結束掉多餘的程序,可以回收釋放一些記憶體,所以推薦在記憶體較少的伺服器或VPS上使用。具體最大數量根據 記憶體/20M 得到。
2、最大處理請求數

pm.max_requests = 10240

最大處理請求數是指一個php-fpm的worker程序在處理多少個請求後就終止掉,master程序會重新respawn一個新的。
這個配置的主要目的是避免php直譯器或程式引用的第三方庫造成的記憶體洩露。

3、最長執行時間
request_terminate_timeout = 30
最大執行時間在php.ini和php-fpm.conf裡都可以配置,配置項分別為max_execution_time和request_terminate_timeout。
這兩項都是用來配置一個PHP指令碼的最大執行時間的。當超過這個時間時,PHP-FPM不只會終止指令碼的執行,
還會終止執行指令碼的Worker程序。所以Nginx會發現與自己通訊的連線斷掉了,就會返回給客戶端502錯誤。
其作用及其影響參見:Nginx中502和504錯誤詳解
以上就是PHP-FPM配置檔案的一些引數最佳化了

TIME_WAIT: 表示收到了對方的FIN報文,併傳送出了ACK報文,就等2MSL後即可回到CLOSED可用狀態了。
如果FIN_WAIT_1狀態下,收到了對方同時帶 FIN標誌和ACK標誌的報文時,可以直接進入到TIME_WAIT狀態,
而無須經過FIN_WAIT_2狀態。

可參考最佳化文件:
https://www.jianshu.com/p/711f376b74e6

26.Nginx最佳化:



一.最佳化Nginx併發量
[root@proxy ~]# ab -n 2000 -c 2000 http://192.168.4.5/
Benchmarking 192.168.4.5 (be patient)
socket: Too many open files (24)    //提示開啟檔案數量過多

#修改Nginx配置檔案,增加併發量
[root@proxy ~]# vim /usr/local/nginx/conf/nginx.conf
.. ..
worker_processes 2;     //與CPU核心數量一致
events {
worker_connections 65535;  //每個worker最大併發連線數
use epoll;
}
.. ..
[root@proxy ~]# nginx -s reload





二.最佳化Linux核心引數(最大檔案數量)

[root@proxy ~]# ulimit -a      //檢視所有屬性值
[root@proxy ~]# ulimit -Hn 100000    //設定硬限制(臨時規則)
[root@proxy ~]# ulimit -Sn 100000    //設定軟限制(臨時規則)
[root@proxy ~]# vim /etc/security/limits.conf
 .. ..

*    soft nofile   100000
*    hard nofile   100000
     #該配置檔案分4列,分別如下:
     #使用者或組 硬限制或軟限制 需要限制的專案 限制的值
     最佳化後測試伺服器併發量
     [root@proxy ~]# ab -n 2000 -c 2000 http://192.168.4.5/





三.最佳化Nginx資料包頭快取
[root@proxy ~]# cat lnmp_soft/buffer.sh 
#!/bin/bash
URL=http://192.168.4.5/index.html?
for i in {1..5000}
do
 URL=${URL}v$i=$i
done
curl $URL        //經過5000次迴圈後,生成一個長的URL位址列
[root@proxy ~]# ./buffer.sh
.. ..

<center><h1>414 Request-URI Too Large</h1></center>  //提示頭部資訊過大

修改Nginx配置檔案,增加資料包頭部快取大小
[root@proxy ~]# vim /usr/local/nginx/conf/nginx.conf
.. ..
http {
client_header_buffer_size 1k;  //預設請求包頭資訊的快取 
large_client_header_buffers 4 4k;  //大請求包頭部資訊的快取個數與容量
.. ..
}
[root@proxy ~]# nginx -s reload





四.對頁面進行壓縮處理
[root@proxy ~]# cat /usr/local/nginx/conf/nginx.conf
http {
.. ..
gzip on;       //開啟壓縮
gzip_min_length 1000;    //小檔案不壓縮
gzip_comp_level 4;    //壓縮比率
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;
         //對特定檔案壓縮,型別參考mime.types
.. ..





五.伺服器記憶體快取
http { 
open_file_cache   max=2000 inactive=20s;
  open_file_cache_valid 60s;
  open_file_cache_min_uses 5;
  open_file_cache_errors off;
//設定伺服器最大快取2000個檔案控制代碼,關閉20秒內無請求的檔案控制代碼
//檔案控制代碼的有效時間是60秒,60秒後過期
//只有訪問次數超過5次會被快取
}
http { 
open_file_cache   max=2000 inactive=20s;
  open_file_cache_valid 60s;
  open_file_cache_min_uses 5;
  open_file_cache_errors off;
//設定伺服器最大快取2000個檔案控制代碼,關閉20秒內無請求的檔案控制代碼
//檔案控制代碼的有效時間是60秒,60秒後過期
//只有訪問次數超過5次會被快取
}




六.瀏覽器本地快取靜態資料
[root@proxy ~]# vim /usr/local/nginx/conf/nginx.conf
server {
  listen  80;
  server_name localhost;
  location / {
   root html;
   index index.html index.htm;
  }
location ~* \.(jpg|jpeg|gif|png|css|js|ico|xml)$ {
expires  30d;   //定義客戶端快取時間為30天
}
}
[root@proxy ~]# cp /usr/share/backgrounds/day.jpg /usr/local/nginx/html
[root@proxy ~]# nginx -s reload

27.nginx 負載怎麼做的:

就是 在http 模組裡面 配置 upsteam模組在配置proxy_pass 反向代理 實現均衡的

28.nginx 可以做什麼 ?

反向代理 負載均衡 動靜分離

29.nginx 負載均衡的策略

分為2個類 1  內建策略和擴充套件策略


內建策略 有輪訓  權重  ip hash

30.nginx 主備 怎麼區分?

看日誌 或者 看 vip在哪

31.主故障了 從接手了 然後主恢復了 流量怎麼走?

vip 在哪 流量就在哪

32.nginx 均衡 權重缺點?

不夠平均,可能造成伺服器 壓力增大

33.nginx 反向代理怎麼做的

就是一個 server 模組 使用 proxy_pass 實現代理

34.也是問的nginx,nginx負載均衡具體需要配置哪些東西,寫出來?

就是 在http 模組裡面   配置 upsteam模組在配置proxy_pass 反向代理 實現均衡的

mysql匯出匯入,匯出表,匯出表結構。怎麼操作
mysqldump -uroot -p test test | gzip >1.sql.gz  
匯出表結構
mysqldump -uroot -pdbpasswd -d dbname test>db.sql;

35.mysql主從怎麼實現,需要具體配置哪些東西,寫出來

暫定業務-資料庫備份-恢復到從庫
主庫開啟binlog日誌 ,開啟i/0執行緒 設定授權賬戶 記錄資料庫狀態 支援sql同步
show slave status\G 檢查主從狀態 2個yes 就是ok

37.一個指令碼隨開機啟動,除了放rc.loac還可以放哪裡?

/etc/inittab 也可以實現

38.如果一個伺服器很卡,你怎麼排查 ?

首先看看系統負載情況 和 連線狀態 ,然後找到異常程序 看看對應服務的日誌

39.top命令cpu那一欄分別代表的什麼意思 ?

cpu 總體資訊 程序佔用%比 核心佔用%比 空閒cpu 等待i/0

40.nginx 的vip是怎麼確定的,具體需要怎麼配置來實現他

使用keepalived 配置虛擬vip

41.keppalive是什麼,他的核心功能是什麼?

高可用軟體 核心功能就是 故障切換 實現ip 自動漂移 保障業務不當機

42.Keepalived工作原理談談?

Keepalived故障切換轉移,是透過VRRP(虛擬路由冗餘協議)來實現的。

在Keepalived服務正常工作時,主master節點會不斷的向備節點傳送心跳資訊,用來告訴備Backup節點自己還活著,
當主master節點發生故障時候,就無法傳送心跳資訊了,備節點也就因此無法繼續檢測到來自主 Master節點的心跳了,
於是呼叫自身的接管程式,接管主Master節點的 IP資源及服務。而當主 Master節點恢復時,備Backup節點又會釋放IP資源及服務,恢復到原來的備用角色。

43.nginx有什麼特殊配置,如輪詢方式,反向代理加的特殊引數 ?

加一些
max_fails=5 fail_timeout=10s; 失敗次數 時間間隔

proxy_set_header Host $host; 不加host欄位 均衡就會找不到資源

44.nginx做過哪些配置?

反向代理 proxy_pass
負載均衡 upstread
動靜分離 (proxy_pass/upstream)
nginx rewrite地址重寫
location匹配
訪問限制 limit_conn_module、limit_req_module

45.nginx狀態碼,如500什麼問題502能具體說一下是什麼嗎這兩個?

500 一般內部錯誤  我經常遇到都是資料庫連線
502  一般閘道器問題 基本都是後端出現異常,就看下 後端服務的日誌

相關文章