鎖屏面試題百日百刷-nginx如何做到高可用
鎖屏面試題百日百刷,每個工作日堅持更新面試題。鎖屏面試題app、小程式現已上線,官網地址:https://www.demosoftware.cc/#/introductionPage。已收錄了每日更新的面試題的所有內容,還包含特色的解鎖螢幕複習面試題、每日程式設計題目郵件推送等功能。讓你在面試中先人一步,吊打面試官!接下來的是今日的面試題:
====Nginx負載均衡怎麼實現的?策略有哪些?
為了避免伺服器崩潰,大家會通過負載均衡的方式來分擔伺服器壓力。將對臺伺服器組成一個叢集,當用戶訪問時,先訪問到一個轉發伺服器,再由轉發伺服器將訪問分發到壓力更小的伺服器。
Nginx負載均衡實現的策略有以下五種:
1、輪詢(預設)
每個請求按時間順序逐一分配到不同的後端伺服器,如果後端某個伺服器宕機,能自動剔除故障系統。
upstream backserver {
server 192.168.0.12;
server 192.168.0.13;
}
2、權重 weight
weight的值越大分配到的訪問概率越高,主要用於後端每臺伺服器效能不均衡的情況下。其次是為在主從的情況下設定不同的權值,達到合理有效的地利用主機資源。
upstream backserver {
server 192.168.0.12 weight=2;
server 192.168.0.13 weight=8;
}
3、ip_hash( IP繫結)
每個請求按訪問IP的雜湊結果分配,使來自同一個IP的訪客固定訪問一臺後端伺服器, 並且可以有效解決動態網頁存在的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演算法可以根據頁面大小和載入時間長短智慧地進行負載均衡,響應時間短的優先分配。哪個伺服器的響應速度快,就將請求分配到那個伺服器上。
upstream backserver {
server server1;
server server2;
fair;
}
url_hash(第三方外掛)
必須安裝Nginx的hash軟體包
按訪問url的hash結果來分配請求,使每個url定向到同一個後端伺服器,可以進一步提高後端快取伺服器的效率。
upstream backserver {
server squid1:3128;
server squid2:3128;
hash $request_uri;
hash_method crc32;
}
====Nginx配置高可用性怎麼配置(負載均衡怎麼做配置)?
當上遊伺服器(真實訪問伺服器),一旦出現故障或者是沒有及時相應的話,應該直接輪訓到下一臺伺服器,保證伺服器的高可用
Nginx配置程式碼:
server {
listen 80;
server_name www.lijie.com;
location / {
### 指定上游伺服器負載均衡伺服器
proxy_pass http://backServer;
###nginx與上游伺服器(真實訪問的伺服器)超時時間 後端伺服器連線的超時時間_發起握手等
候響應超時時間
proxy_connect_timeout 1s;
###nginx傳送給上游伺服器(真實訪問的伺服器)超時時間
proxy_send_timeout 1s;
### nginx接受上游伺服器(真實訪問的伺服器)超時時間
proxy_read_timeout 1s;
index index.html index.htm;
}
}
====Nginx怎麼判斷別IP不可訪問?
如果訪問的ip地址為192.168.9.115,則返回403
if ($remote_addr = 192.168.9.115) {
return 403;
}
====nginx怎麼限制瀏覽器訪問?
## 不允許谷歌瀏覽器訪問 如果是谷歌瀏覽器返回500
if ($http_user_agent ~ Chrome) {
return 500;
}
====nginx中Rewrite全域性變數是什麼?
$args 這個變數等於請求行中的引數,同$query_string
$content length 請求頭中的Content-length欄位。
$content_type 請求頭中的Content-Type欄位。
$document_root 當前請求在root指令中指定的值。
$host 請求主機頭欄位,否則為伺服器名稱。
$http_user_agent 客戶端agent資訊
$http_cookie 客戶端cookie資訊
$limit_rate 這個變數可以限制連線速率。
$request_method 客戶端請求的動作,通常為GET或POST。
$remote_addr 客戶端的IP地址。
$remote_port 客戶端的埠。
$remote_user 已經經過Auth Basic Module驗證的使用者名稱。
$request_filename 當前請求的檔案路徑,由root或alias指令與URI請求生成。
$scheme HTTP方法(如http,https)。
$server_protocol 請求使用的協議,通常是HTTP/1.0或HTTP/1.1。
$server_addr 伺服器地址,在完成一次系統呼叫後可以確定這個值。
$server_name 伺服器名稱。
$server_port 請求到達伺服器的埠號。
$request_uri
包含請求引數的原始URI,不包含主機名,如”/foo/bar.php?arg=baz”。
$uri 不帶請求引數的當前URI,$uri不包含主機名,如”/foo/bar.html”。
$document_uri 與$uri相同。
更多面試題可關注"demo鎖屏面試題"公眾號通過小程式或App獲取面試題和學習資源