主頁 > 軟體設計 > Web運維面試題

Web運維面試題

2021-10-06 11:44:31 軟體設計

目錄

1.LNMP 的作業流程

2.FastCGI的重要特點

3.FastCGI作業原理:

4.apache服務無法啟動的原因

5.apache的默認作業模式是什么?

6.請寫出 apache2.X 版本的兩種作業模式,以及各自作業原理,如何查看 apache當前所 支持的模塊,并且查看是作業在哪種模式下?

7.Nginx和apache的區別?

8.原始碼編譯安裝nginx時,如何啟用更多的模塊以及禁用不需要的模塊?

9.nginx的作業原理?

10.nginx支持哪些型別的代理服務器,如何進行配置?

11.nginx如何做動靜分離

12.Nginx常用的調度演算法,ip hash和輪詢演算法有什么區別?

13.nginx限流的方法

14.nginx的upstream模塊在組態檔中的核心配置是什么

15.upstream支持4種負載均衡調度演算法:

16.nginx負載均衡的作用

17.nginx后端pod獲取真實ip

18.logstash組態檔中都定義了哪些

19.nginx后端看到的ip默認情況是用戶的物理ip還是nginx節度器的ip

20.nginx根據ip地址的訪問路徑將訪問轉發給不同的后端服務器,如何操作

21.在nginx的組態檔中,正則匹配的符號分別代表什么?

22.nginx正向代理是什么,與反向代理的區別

23.nginx負載均衡和反向代理的區別

24.nginx反向代理的優點

25.nginx是從哪個版本之后開始支持upstream模塊

26.nginx 防止盜鏈接

27.地址重寫的好處

28.nginx做反向代理一般備份哪些東西

29.nginx常用的3種調度演算法:

30.如何實作nginx代理的節點訪問日志記錄的是真實訪客的IP,不是代理的IP

31.nginx設定黑白名單的方法

32.nginx rewrite 規則中 last、break、redirect、permanent 的含義,

33.nginx如何處理一個請求

34.你對nginx做過哪些優化?

35.Squid、Varinsh和Nginx有什么區別,作業中你怎么選擇?

36.講述一下Tomcat8005、8009、8080三個埠的含義?

37.如何優化tomcat?

38.tomcat作為Web服務器,它的處理性能直接關系到用戶體驗,下面是幾種常見的優化措施:

39.Tomcat的預設是多少,怎么修改

40.Tomcat如何開啟SSL加密,SSL默認的加密埠是多少?

41.Tomcat和Resin有什么區別,作業中你怎么選擇?

42.Tomcat的每個組件的作用?

43.淺談Tomcat 、Apache、 Nginx的區別及優缺點

44.什么是代理服務器:

45.部署一個LVS集群環境都需要什么組件

46.Lvs的幾種模式區別

47.LVS處理的是什么資料?

48.LVS集群組成:

49.LVS負載均衡十種演算法

50.LVS目前實作的十種調度演算法:

51.四層負載均衡和七層負載均衡的區別

52.HAProxy 組態檔有哪些組成部分?

53.lvs、Haproxy與nginx的區別?

54.Keepalived通過什么判斷哪臺主機為主服務器,通過什么方式設定浮動IP?

55.keepalived的作業原理?

56.keepalived是主要應用在哪層

57.keepalived啟動后會有幾個行程?

58.keepalived的健康檢查方式

59.HTTP原理

60.http請求和相應的程序

61.curl的回傳的內容

62.http協議請求url共定義了哪幾種方法

63.http的get和post方法有什么區別

64.HTTP常見狀態碼

65.curl命令如何去發一個get請求和post請求,區別是什么,洗掉是什么

66.請詳細描述http協議原理

67.配置httpd網站服務時,快速添加新的虛擬主機

68.動態網頁和靜態網頁的區別,基于httpd要支持PHP程式,基于Python程式具備的條件

69.基于httpd架設一個安全web站點的條件

70.什么是中間件?什么是jdk?


1.LNMP 的作業流程

當 LNMP 作業的時候,首先是用戶通過瀏覽器輸入域名請求 NginxWeb服務,如果是請求的是靜態的資源,則由 Nginx決議回傳給用戶,

如果是動態的資源,那么久通過 FastCGI介面發送給 PHP 引擎服務(FastCGI行程php-fpm)進行決議,

如果這個動態的請求要讀取資料庫,那么 PHP 就會繼續向后請求 MySQL 資料庫,讀取需要的資料,最終通過 Nginx服務把獲取的資料回傳給用戶,這就是 LNMP 的基本流程,

2.FastCGI的重要特點

1.HTTP 服務器和動態腳本語言間通信的介面或工具,

2.可以把動態語言決議或 HTTP 服務器分離開,

3.Nginx、Apache、Lighttpd,以及多數動態語言都支持 FastCGI,

4.PHP 動態語言方式采用 C/S 結構,分為客戶端(HTTP 服務器)和服務器端(動態語言決議服務器),

5.PHP 動態語言服務器端可以啟動多個 FastCGI的守護行程,

6.HTTP 服務器通過 FastCGI客戶端和動態語言 FastCGI服務器端通信,

3.FastCGI作業原理:

1)Web Server啟動時載入FastCGI行程管理器

2)FastCGI行程管理器初始化,啟動多個解釋器

3)當客戶端的請求到達Web Server時,FastCGI行程管理器選擇并連接到一個解釋器

4)FastCGI子行程完成處理后回傳結果,將標準輸出和錯誤資訊從同一連接回傳

4.apache服務無法啟動的原因

80 埠沖突,被占用,解決辦法:使用 netstat 查看當前埠的服務
組態檔 httpd.conf 配置出錯,解決辦法:建議在修改 httpd 組態檔之前備份一個主組態檔

5.apache的默認作業模式是什么?

Apache 的作業模式有 prefork worker event 三種作業模式,早期 2.0 版本的默認作業模式
prefork 2.2 版本是 worker 2.4 版本是 event.
查看 apache 的作業模式可以使用 httpd -V 查看

6.請寫出 apache2.X 版本的兩種作業模式,以及各自作業原理,如何查看 apache當前所 支持的模,并且查看是作業在哪種模式下?

prefork(多行程,每個子行程產生一個執行緒) worker(多行程多執行緒,每個行程生成多個 執行緒)

其主要作業方式是:當 Apache服務器啟動后,mpm_prefork模塊會預先創建多個子行程(默認為 5個),每個子行程只有一個執行緒,當接收到客戶端的請求后,mpm_prefork模塊再將請求轉交給子行程處理,并且每個子行程同時只能用于處理單個請求,如果當前的請求數將超過預先創建的子行程數時,mpm_prefork模塊就會創建新的子行程來處理額外的請求,Apache總是試圖保持一些備用的或者是空閑的子行程用于迎接即將到來的請求,這樣客戶端的請求就不需要在接收后等候子行程的產生,

由于在 mpm_prefork模塊中,每個請求對應一個子行程,因此其占用的系統資源相對其他兩種模塊而言較多,不過 mpm_prefork模塊的優點在于它的每個子行程都會獨立處理對應的單個請求,這樣,如果其中一個請求出現問題就不會影響到其他請求,Prefork在效率上要比 Worker要高,但是記憶體使用大得多不擅長處理高并發的場景,

Worker模式(多執行緒多行程):

和 prefork模式相比,worker使用了多行程和多執行緒的混合模式,worker模式也同樣會先預派生一些子行程,然后每個子行程創建一些執行緒,同時包括一個監聽執行緒,每個請求過來會被分配到一個執行緒來服務,執行緒比起行程會更輕量,因為執行緒是通過共享父行程的記憶體空間,因此,記憶體的占用會減少一些,在高并發的場景下會比 prefork有更多可用的執行緒,表現會更優秀一些;

另外,如果一個執行緒出現了問題也會導致同一行程下的執行緒出現問題,如果是多個執行緒出現問題,也只是影響 Apache的一部分,而不是全部,

總的來說,prefork方式速度要稍高于 worker,然而它需要的 cpu和 memory資源也稍多于

woker,可以通過命令 httpd-M 或 httpd-l可以查看 apache當前的模塊可以通過命令 httpd-V 查看是作業在哪種模式下

7.Nginxapache的區別?

相同點:

1)都是HTTP服務器軟體

2)功能上都采用模塊化結構設計

3)都支持通用的語言介面,如PHP、Perl、Python等

4)支持正向、反向代理、虛擬主機、URL重寫、壓縮傳輸、SSL加密傳輸

不同點:

1)Apache處理速度很慢,占用很多記憶體資源

2)功能上,Apache所有模塊支持動靜態編譯,Nginx模塊都是靜態編譯的

3)對Fcgi的支持:Apache支持的很不好,Nginx支持非常好

4)處理連接方式:Nginx支持epoll,Apache不支持

5)空間使用上:Nginx安裝包僅幾百K

8.原始碼編譯安裝nginx,如何啟用更多的模塊以及禁用不需要的模塊?

執行./confifigure腳本時,通過添加--with-模塊名的方式啟用更多模塊,通過添加--without-模塊名禁

用不需要的模塊

ngx_http_auth_basic_module模塊 實作網站的用戶認證功能,包含auth_basic等配置引數

ngx_http_charset_module模塊 可以自定義網頁編碼,包含charset utf8等配置引數

ngx_http_fastcgi_module模塊 轉發請求給PHP服務,包含fastcgi_pass等配置引數

ngx_http_gzip_module模塊 實作網站資料壓縮功能,包含gzip、gzip_type等配置參

ngx_http_log_module模塊 記錄用戶請求的日志,,包含access_log等配置引數

ngx_http_rewrite_module模塊 地址重新模塊,包含rewrite、break、last等配置引數

ngx_http_ssl_module模塊 實作HTTPS加密網站,包含ssl_certifificate、

ssl_certifificate_key等引數

ngx_http_stub_status_module模塊 顯示nginx服務狀態,包含stub_status配置引數

ngx_http_upstream_module模塊 定義集群服務器組模塊,包含upstream、hash、

ip_hash等配置引數ngx_stream_core_module模塊 定義4層調度(集群服務器組)模塊

ngx_http_core_module模塊 核心模塊,包含http、server_name、root等配置引數

ngx_http_access_module模塊 訪問控制模塊,包含allow和deny配置引數

ngx_http_proxy_module 模塊 代理模塊,包含proxy_pass等配置引數

ngx_http_limit_conn_module 模塊 限制并發量模塊,包含limit_conn等引數

proxy模塊中配置過:proxy_set_header proxy_connect_timeout proxy_send_timeout

proxy_buffffer_*

9.nginx的作業原理?

當收到一個HTTP請求時,nginx作為一個代理服務器將客戶端的請求映射到一個location,location

配置的每個指令會啟動相應的不同的模塊完成相應的作業

10.nginx支持哪些型別的代理服務器,如何進行配置?

基于7層的HTTP代理和MAIL代理

基于4層的TCP或UDP代理

定義集群服務器模板配置:

upstream servers {

server 后端真實服務器IP:埠

server 后端真實服務器IP:埠

}

呼叫集群組態檔模板:

7層調度:proxy_pass http://servers;

4層調度:proxy_pass servers;

11.nginx如何做動靜分離

1 )安裝 nginx 原始碼包
2 )修改 nginx 組態檔,將動態請求轉發到 PHP 服務商,將靜態頁面轉發到自定義的靜態頁面

12.Nginx常用的調度演算法,ip hash和輪詢演算法有什么區別?

輪詢演算法、 ip hash 、權重
ip_hash :同一 ip 會被分配給固定的后端服務器 , 解決 session 問題
輪詢:默認的演算法,每個請求按時間順序逐一分配到不同的后端服務器,如果后端服務器 down 掉,能自動剔除,

13.nginx限流的方法

https://baijiahao.baidu.com/s?id=1634400719648980722&wfr=spider&for=pc

14.nginxupstream模塊在組態檔中的核心配置是什么

定義后端服務器組 servers proxy_pass 模塊

15.upstream支持4種負載均衡調度演算法:

A) 輪詢 ( 默認 ): 每個請求按時間順序逐 - 分配到不同的后端服務器 ;
B)ip_ hash: 每個請求按訪問 IP hash 結果分配,同 - - IP 客戶端固定訪問一 - 個后端服務器 ;
C)ur_ hash: 按訪問 url hash 結果來分配請求,使每個 urI 定向到同一個后端服務器 ;
D)fair: 這是比 . 上面兩個更加智能的負載均衡演算法,此種演算法可以依據頁面大小和加載時間長短智能地進行負載均衡,也就是根據后端服務器的回應時間來分配請求,回應時間短的優先分配,
Nginx 本身是不支持 fair 的,如果需要使用這種調度演算法,必須下載 Nginx upstream_ fair
塊,

16.nginx負載均衡的作用

將外部發送來的請求均勻分配到對稱結構中的某一臺服務器上,而接收到請求的服務器獨立地回 應客戶的請求,均衡負載能夠平均分配客戶請求到服務器列陣,基于此提供快速獲取重要資料, 解決大量并發訪問服務問題,

17.nginx后端pod獲取真實ip

1 )通過添加 nginx http_realip_module 模塊處理包頭資訊
2 )修改 nginx 組態檔,在 location 中添加啟動模塊
3 )重啟 nginx 服務
將埠虛擬化也可以獲取到真實 ip

18.logstash組態檔中都定義了哪些

引數 配置
認值
node.name 節點名稱
機名稱
path.data / 資料存盤路徑
LOGSTASH_HOME/data/
pipeline.workers 輸出通道的作業 workers 資料量(提升輸出效率)
cpu 核數
pipeline.output.workers 每個輸出插件的作業 wokers 數量
1
pipeline.batch.size 每次 input 數量
125
path.confifig 過濾組態檔目錄
confifig.reload.automatic 自動重新加載被修改配置 false
or true
confifig.reload.interval 組態檔檢查時間
path.logs 日志輸出路徑
http.host 系結主機地址,用戶指標收集
“127.0.0.1”
http.port 系結埠
5000-9700
log.level 日志輸出級別 , 如果 confifig.debug 開啟,這里一定要是 debug 日志
info
log.format 日志格式
plain
path.plugins 自定義插件目錄

19.nginx后端看到的ip默認情況是用戶的物理ip還是nginx節度器的ip

默認是節度器的 ip

20.nginx根據ip地址的訪問路徑將訪問轉發給不同的后端服務器,如何操作

location 欄位中添加 X-Forword-For

21.在nginx的組態檔中,正則匹配的符號分別代表什么?

組態檔 server location 匹配:
= 表示精確匹配
^~ 表示 uri 以某個常規字串開頭 , 大多情況下用來匹配 url 路徑, nginx 不對 url 做編碼,因此請求為 /static/20%/aa ,可以被規則 ^~ /static/ /aa 匹配到(注意是空格),
~ 正則匹配 ( 區分大小寫 )
~* 正則匹配 ( 不區分大小寫 ) !~ !~* 分別為區分大小寫不匹配及不區分大小寫不匹配 的正則
/ 任何請求都會匹配
匹配的優先級為:
首先匹配 = ,其次匹配 ^~, 其次是按檔案中順序的正則匹配,最后是交給 / 通用匹配,當有匹配成功時候,停止匹配,按當前匹配規則處理請求,

22.nginx正向代理是什么,與反向代理的區別

https://jingyan.baidu.com/article/f54ae2fcd895b81e93b84973.html
正向代理: 客戶端 < > 代理 一 > 服務端
正向代理簡單地打個租房的比方 :
A( 客戶端 ) 想租 C( 服務端 ) 的房子 , 但是 A( 客戶端 ) 并不認識 C( 服務端 ) 租不到,
B( 代理 ) 認識 C( 服務端 ) 能租這個房子所以你找了 B( 代理 ) 幫忙租到了這個房子,
這個程序中 C( 服務端 ) 不認識 A( 客戶端 ) 只認識 B( 代理 )
C( 服務端 ) 并不知道 A( 客戶端 ) 租了房子,只知道房子租給了 B( 代理 )
反向代理 : 客戶端 一 > 代理 < > 服務端
反向代理也用一個租房的例子 :
A( 客戶端 ) 想租一個房子 ,B( 代理 ) 就把這個房子租給了他,這時候實際上 C( 服務端 ) 才是房東,
B( 代理 ) 是中介把這個房子租給了 A( 客戶端 ) 這個程序中 A( 客戶端 ) 并不知道這個房子到底誰才是房東 他都有可能認為這個房子就是 B( 代理 ) 的由上的例子和圖我們可以知道正向代理和反向代理的區別在于代理的物件不一樣 , 正向代理的代理物件是客戶端 , 反向代理的代理物件是服務端,
Nginx 正向代理的配置:
server {
resolver 192.168.1.1; # 指定 DNS 服務器 IP 地址
listen 8080;
location / { proxy_pass http://
request_uri; # 設定代理服務器的協議和地址
}
}
設定 nginx 代理服務,一般是配置到一個 server 塊中,注意,在該 server 塊中,不要出現server_name 指令,即不要設定虛擬主機的名稱和 IP ,而 resolver 是必需的,如果沒有該指令,nginx 無法處理接收到的域名,其次, nginx 代理服務不支持正向代理 HTTPS 站點,

23.nginx負載均衡和反向代理的區別

反向代理 ,是把一些靜態資源存盤在服務器上,當用戶有請求的時候,就直接回傳 反向代理 服務 器上的資源給用戶,而如果 反向代理 服務器上沒有的資源,就轉發給后面的 負載均衡服務器 載均衡服務器 再將請求分發給后端的 web 服務器,
區別就是:反向代理服務器是需要存盤資源的,讓用戶更快速的接收到資源負載均衡就是,為了 保證后端 web 服務器的高可用,高并發,是不需要要存盤資源,只需要轉發用戶的請求,

24.nginx反向代理的優點

1 、保護了真實的 web 服務器, web 服務器對外不可見,外網只能看到反向代理服務器,而反向代 理服務器上并沒有真實資料,因此,保證了 web 服務器的資源安全,
2 、反向代理為基礎產生了動靜資源分離以及負載均衡的方式,減輕 web 服務器的負擔,加速了對 網站訪問速度(動靜資源分離和負載均衡會以后說)
3 、節約了有限的 IP 地址資源,企業內所有的網站共享一個在 internet 中注冊的 IP 地址,這些服務 器分配私有地址,采用虛擬主機的方式對外提供服務;

25.nginx是從哪個版本之后開始支持upstream模塊

1.9 版本

26.nginx 防止盜鏈接

一:一般的防盜鏈如下
location ~* \.(gif|jpg|png|swf|flv)$ {
valid_referers none blocked www.jzxue.com jzxue.com ;
if ($invalid_referer) {
rewrite ^/ http://www.jzxue.com/retrun.html;
#return 403;
}
}
第一行: gif|jpg|png|swf|flflv
表示對 gif jpg png swf flflv 后綴的檔案實行防盜鏈
第二行:
表示對 www.ingnix.com 2 個來路進行判斷
if{} 里面內容的意思是,如果來路不是指定來思是,如果來路不是指定來路就跳轉到 http://www.jz
xue.com/retrun.html 頁面,當然直接回傳 403 也是可以的,
二:針對圖片目錄防止盜鏈
location /images/ {
alias /data/images/;
valid_referers none blocked server_names *.xok.la xok.la ;
if ($invalid_referer) {return 403;}
}
三:使用第三方模塊 ngx_http_accesskey_module 實作 Nginx 防盜鏈
實作方法如下:
1. 下載 NginxHttpAccessKeyModule 模塊檔案: http://wiki.nginx.org/File:Nginx-accesskey-
2.0.3.tar.gz
2. 解壓此檔案后,找到 nginx-accesskey-2.0.3 下的 confifig 檔案,編輯此檔案:替換其中的
$HTTP_ACCESSKEY_MODULE” ”ngx_http_accesskey_module”
3. 用一下引數重新編譯 nginx
./configure --add-module=path/to/nginx-accesskey
<<pestd add
上面需要加上原有到編譯引數,然后執行 : make && make install
1. 修改 nginx conf 檔案,添加以下幾行:
location /download {
accesskey on;
accesskey_hashmethod md5;
accesskey_arg "key";
accesskey_signature "mypass$remote_addr";
}
其中:
accesskey 為模塊開關;
accesskey_hashmethod 為加密方式 MD5 或者 SHA-1
accesskey_arg url 中的關鍵字引數;
accesskey_signature 為加密值,此處為 mypass 和訪問 IP 構成的字串,

27.地址重寫的好處

使用 Url 重寫能給您網站帶來哪些好處:
第一:有利于搜索引擎抓取,因為現在大部分搜索引擎對動態頁面的抓取還比較弱,它們更喜歡
抓取一些靜態頁面,而我們現在的頁面大部分資料都是動態顯示的,這就需要我們把動態頁面變
成靜態頁面,有利于搜索引擎抓取,
第二:用戶更容易理解,易于用戶記憶和鍵入,
第三:提高安全性,隱藏技術的實作,縮短 url ,隱藏實際路徑,實作技術的隱藏,不至于暴露您
所采用的技術,
第四:可以很方便的重用,提高網站的移植性,如果我們后臺方法改動的話,可以保證前臺的頁
面部分不用改,提高了網站的移植性,
使用地址重寫的缺點:
因為它是通過過濾器原理來實作的,就意味著又多了一道訪問,多少會影響點訪問速度的,這個
可以忽略不計的,

28.nginx做反向代理一般備份哪些東西

組態檔、日志

29.nginx常用的3種調度演算法:

輪詢 ip hash 權重

輪詢:upstream按照輪詢(默認)方式進行負載,每個請求按時間順序逐一分配到不同的后端服務器,如果后端服務器down掉,能自動剔除

ip hash:每個請求按訪問ip的hash結果分配,這樣每個訪客固定訪問一個后端服務器,可以解決session的問題

權重:指定輪詢幾率,權重(weight)和訪問比率成正比,用于后端服務器性能不均的情況

30.如何實作nginx代理的節點訪問日志記錄的是真實訪客的IP,不是代理的IP

配置nginx.conf組態檔增加下同的標記內容

server{

listen 80;

server_name blog.text.com;

location / {

proxy_passhttp://test_servers;

proxy_set_header Host $host; proxy_set_headerX-Forwarded-For $remote_addr;

}

修改完成后,重新加載nginx即可

31.nginx設定黑白名單的方法

1. 設定目錄白名單: 對指定請求路徑不設定限制,如對請求路徑為 api 目錄下的請求不做限制,則 可寫為
server{
location /app {
proxy_pass http://192.168.1.111:8095/app;
limit_conn conn 20; limit_rate 500k;
limit_req zone=foo burst=5 nodelay;
}
location /app/api {
proxy_pass http://192.168.1.111:8095/app/api
}
}
# 因nginx會優先進行精準匹配,所以以上寫法即接觸了對api目錄下屬路徑的限制
2. 設定 ip 白名單,需用到 nginx geo nginx map
在沒有人為洗掉的情況下( --without-http_geo_module --without-http_map_module ),
nginx 默認加載了 ngx-http-geo-module ngx-http-map-module 相關內容;
ngx-http-geo-module 可以用來創建變數,變數值依賴于客戶端 ip 地址 ;
ngx-http-map-module 可以基于其他變數及變數值進行變數創建,其允許分類,或者映射多個變
量到不同值并存盤在一個變數中;
Nginx geo 格式說明
Syntax ( 語法格式 ): geo [$address] $variable { ... }
Default ( 默認 ): -
Content ( 配置段位 ): http
Nginx map 格式說明
Syntax ( 語法格式 ): map String $variable { ... }
Default ( 默認 ) -
Content ( 配置段位 ): http
白名單配置示例
http{
# ... 其他配置內容
# 定義白名單 ip 串列變數
geo $whiteiplist {
default 1 ;
127.0.0.1/32 0;
64.223.160.0/19 0;
}
# 使用 map 指令映射將白名單串列中客戶端請求 ip 為空串
map $whiteiplist $limit{
1 $binary_remote_addr ;
0 "";
}
# 配置請求限制內容
limit_conn_zone $limit zone=conn:10m;
limit_req_zone $limit zone=allips:10m rate=20r/s;
server{
location /yourApplicationName {
proxy_pass http://192.168.1.111:8095/app;
limit_conn conn 50;
limit_rate 500k;
limit_req zone=allips burst=5 nodelay;
}
}
}
白名單配置可用于對合作客戶,搜索引擎等請求過濾限制
# (特殊情況處理)
# 如果想僅限制指定的請求,如:只限制 Post 請求,則:
http{
# 其他請求 ..
# 請求地址 map 映射
map $request_method $limit {
default "";
POST $binary_remote_addr;
}
# 限制定義
limit_req_zone $limit zone=reqlimit:20m rate=10r/s;
server{
... # 與普通限制一致
}
}
# 在此基礎上,想進行指定方法的白名單限制處理,則:
http{
#...
# 定義白名單串列
map $whiteiplist $limitips{
1 $binary_remote_addr;
0 "";
}
# 基于白名單串列,定義指定方法請求限制
map $request_method $limit {
default "";
# POST $binary_remote_addr;
POST $limitips;
}
# 對請求進行參考
limit_req_zone $limit zone=reqlimit:20m rate=10r/s;
# server 中進行參考
server{
#... 與普通限制相同
}
}

32.nginx rewrite 規則中 lastbreakredirectpermanent 的含義,

1.rewrite break -url
重寫后,直接使用當前資源,不再執行 location 里余下的陳述句,完成本次請求,地址欄 url 不變,
2.rewrite last -url
重寫后,馬上發起一個新的請求,再次進入 server 塊,重試 location 匹配,超過 10 次匹配不到報
500 錯誤,地址欄不變
3.rewrite redirect
回傳 302 臨時重定向,地址欄顯示重定向后的 url ,,爬蟲不會更新 url (臨時)
4.rewrite permanent
回傳 301 永久重定向,地址欄顯示重定向后的 url ,爬蟲更新 url

33.nginx如何處理一個請求

nginx 作為服務端處理請求連接
首先, nginx 在啟動時,會決議組態檔,得到需要監聽的埠與 ip 地址,然后在 nginx master行程里面,先初始化好這個監控的 socket( 創建 socket ,設定 addrreuse 等選項,系結到指定的 ip地址埠,再 listen) ,然后再 fork( 一個現有行程可以呼叫 fork 函式創建一個新行程,由 fork 創建 的新行程被稱為子行程 ) 出多個子行程出來,然后子行程會競爭 accept 新的連接,此時,客戶端就 可以向 nginx 發起連接了,當客戶端與 nginx 進行三次握手,與 nginx 建立好一個連接后,此時,某 一個子行程會 accept 成功,得到這個建立好的連接的 socket ,然后創建 nginx 對連接的封裝,即 ngx_connection_t 結構體,接著,設定讀寫事件處理函式并添加讀寫事件來與客戶端進行資料的交換,最后, nginx 或客戶端來主動關掉連接
Nginx 作為客戶端處理請求連接
nginx 也是可以作為客戶端來請求其它 server 的資料的(如 upstream 模塊),此時,與其它
server 創建的連接,也封裝在 ngx_connection_t 中,作為客戶端, nginx 先獲取一個
ngx_connection_t 結構體,然后創建 socket ,并設定 socket 的屬性(
比如非阻塞),然后再通過 添加讀寫事件,呼叫 connect/read/write 來呼叫連接,最后關掉連接,并釋放 ngx_connection_t

34.你對nginx做過哪些優化?

優化404報錯頁面

Nginx的服務狀態資訊

優化并發量(修改內核引數ulimit -Hn/Sn vim /etc/security/limits.conf,壓力并發測驗 ab -n -c)

優化資料包頭快取

優化瀏覽器本地快取靜態資料

優化nginx服務的安全配置:

洗掉不需要的模塊

修改版本資訊限制并發量(降低DOS風險)

拒絕非法的請求

防止buffffer溢位(防止客戶端請求資料溢位,降低DOS風險)

添加黑白名單(在組態檔中server處定義)

cookie過濾,URL過濾

35.SquidVarinshNginx有什么區別,作業中你怎么選擇?

Squid、Varinsh和Nginx都是代理服務器

什么是代理服務器:

能當替用戶去訪問公網,并且能把訪問到的資料快取到服務器本地,等用戶下次再訪問相同的資 源的時候,代理服務器直接從本地回應給用戶,當本地沒有的時候,我代替你去訪問公網,我接收你的請求,我先在我自已的本地快取找,如果我本地快取有,我直接從我本地的快取里回復你,如果我在我本地沒有找到你要訪問的快取的資料,那么代理服務器就會代替你去訪問公網

區別:

1)Nginx本來是反向代理/web服務器,用了插件可以做做這個副業但是本身不支持特性挺多,只 能快取靜態檔案

2)從這些功能上,varnish和squid是專業的cache服務,而nginx這些是第三方模塊完成

3)varnish本身的技術上優勢要高于squid,它采用了可視化頁面快取技術

在記憶體的利用上,Varnish比Squid具有優勢,性能要比Squid高,還有強大的通過Varnish管理埠,可以使用正則運算式快速、批量地清除部分快取

它是記憶體快取,速度一流,但是記憶體快取也限制了其容量,快取頁面和圖片一般是挺好的

4)squid的優勢在于完整的龐大的cache技術資料,和很多的應用生產環境

作業中選擇:要做cache服務的話,我們肯定是要選擇專業的cache服務,優先選擇squid或者varnish,

36.講述一下Tomcat800580098080三個埠的含義?

8005==》 關閉時使用

8009==》 為AJP埠,即容器使用,如Apache能通過AJP協議訪問Tomcat的8009埠

8080==》 一般應用使用

37.如何優化tomcat?

隱藏版本號

降權啟動

洗掉測驗頁面

38.tomcat作為Web服務器,它的處理性能直接關系到用戶體驗,下面是幾種常見的優化措施:

1)去掉對web.xml的監視,把jsp提前編輯成Servlet,有富余物理記憶體的情況,加大tomcat使用的jvm的記憶體2)服務器資源服務器所能提供CPU、記憶體、硬碟的性能對處理能力有決定性影響,

(1) 對于高并發情況下會有大量的運算,那么CPU的速度會直接影響到處理速度,

(2) 記憶體在大量資料處理的情況下,將會有較大的記憶體容量需求,可以用-Xmx -Xms -

XX:MaxPermSize等引數對記憶體不同功能塊進行劃分,我們之前就遇到過記憶體分配不足,導致虛擬機一直處于full GC,從而導致處理能力嚴重下降,

(3) 硬碟主要問題就是讀寫性能,當大量檔案進行讀寫時,磁盤極容易成為性能瓶頸,最好的辦

法還是利用下面提到的快取,3)利用快取和壓縮

對于靜態頁面最好是能夠快取起來,這樣就不必每次從磁盤上讀,這里我們采用了Nginx作為

快取服務器,將圖片、css、js檔案都進行了快取,有效的減少了后端tomcat的訪問,

另外,為了能加快網路傳輸速度,開啟gzip壓縮也是必不可少的,但考慮到tomcat已經需要

處理很多東西了,所以把這個壓縮的作業就交給前端的Nginx來完成,

除了文本可以用gzip壓縮,其實很多圖片也可以用影像處理工具預先進行壓縮,找到一個平

衡點可以讓畫質損失很小而檔案可以減小很多,曾經我就見過一個圖片從300多kb壓縮到幾十kb,自己幾乎看不出來區別,

4)采用集群

單個服務器性能總是有限的,最好的辦法自然是實作橫向擴展,那么組建tomcat集群是有效

提升性能的手段,我們還是采用了Nginx來作為請求分流的服務器,后端多個tomcat共享session來協同作業

5)優化tomcat引數

這里以tomcat7的引數配置為例,需要修改conf/server.xml檔案,主要是優化連接配置,關

閉客戶端dns查詢,

<Connector port="8080"

protocol="org.apache.coyote.http11.Http11NioProtocol"

connectionTimeout="20000"

redirectPort="8443"

maxThreads="500"

minSpareThreads="20"

acceptCount="100"

disableUploadTimeout="true"

enableLookups="false"

URIEncoding="UTF-8" />

39.Tomcat的預設是多少,怎么修改

Tomcat的預設埠號是8080.

修改Tomcat埠號:

1)找到Tomcat目錄下的conf檔案夾

2)進入conf檔案夾里面找到server.xml檔案

3)打開server.xml檔案

4)在server.xml檔案里面找到下列資訊

maxThreads=”150″ minSpareThreads=”25″ maxSpareThreads=”75″

enableLookups=”false” redirectPort=”8443″ acceptCount=”100″

connectionTimeout=”20000″ disableUploadTimeout=”true” />

5)把port=”8080″改成port=”8888″,并且保存

6)啟動Tomcat,并且在IE瀏覽器里面的地址欄輸入http://127.0.0.1:8888/

7)tomcat默認采用的BIO模型,在幾百并發下性能會有很嚴重的下降,tomcat自帶還有NIO的模型,另外也可以呼叫APR的庫來實作作業系統級別控制,

NIO模型是內置的,呼叫很方便,只需要將上面組態檔中protocol修改成

org.apache.coyote.http11.Http11NioProtocol,重啟即可生效,如下面的引數配置,默認的是

HTTP/1.1,

<Connector port="8080″ protocol="org.apache.coyote.http11.Http11NioProtocol"

connectionTimeout="20000″ redirectPort="8443″ maxThreads="500″

minSpareThreads="20″ acceptCount="100″ disableUploadTimeout="true"

enableLookups="false" URIEncoding="UTF-8″ />

40.Tomcat如何開啟SSL加密,SSL默認的加密埠是多少?

開啟一個獨立的Connector,設定埠,并在配置中呼叫非對稱秘鑰檔案

默認的SSL埠為443埠,Tomcat組態檔中的默認設定為8443埠

41.TomcatResin有什么區別,作業中你怎么選擇?

區別:Tomcat用戶數多,可參考檔案多,Resin用戶數少,可考慮檔案少

最主要區別則是Tomcat是標準的java容器,不過性能方面比resin的要差一些

但穩定性和java程式的兼容性,應該是比resin的要好

作業中選擇:現在大公司都是用resin,追求性能;而中小型公司都是用Tomcat,追求穩定和程 序的兼容

42.Tomcat的每個組件的作用?

1)Server:整個Servlet容器組合,可以包含一個或多個Server元素在最頂層,代表整個Tomcat 容器,因此它必須是server.xml中唯一一個最外層的元素,一個Server元素中可以有一個或多個Service元素,

2)service:它由一個或者多個Connector組成,以及一個Engine,負責處理所有Connector所獲得的客戶請求,

3)Connector:客戶端與程式互動組件,負責接收請求以及向客戶端回傳回應,Service的埠就是由它來監聽

4)Engine:處理連接器接收到請求,Engine組件在Service組件中有且只有一個;Engine是

Service組件中的請求處理組件,Engine組件從一個或多個Connector中接收請求并處理,并將完成的回應回傳給Connector,最終傳遞給客戶端,

5)Host:虛擬主機(是運行多個Web應用(一個Context代表一個Web應用),并負責安裝、展開、啟動和結束每個Web應用,)

6.)Context一個Context對應一個Web Application

Ps: Engine、Host和Context都是容器,但它們不是平行的關系,而是父子關系:Engine包含

Host,Host包含Context,

43.淺談Tomcat Apache Nginx的區別及優缺點

1) Apache

Apache HTTP服務器是一個模塊化的服務器,可以運行在幾乎所有廣泛使用的計算機平臺上,其屬于應用服務器,Apache支持支持模塊多,性能穩定,Apache本身是靜態決議,適合靜態HTML、圖片等,但可以通過擴展腳本、模塊等支持動態頁面等,

Apche可以支持PHPcgiperl,但是要使用Java的話,你需要Tomcat在Apache后臺支撐,將Java請求由Apache轉發給Tomcat處理,)

缺點:配置相對復雜,自身不支持動態頁面,

2) Tomcat:

Tomcat是應用(Java)服務器,它只是一個Servlet(JSP也翻譯成Servlet)容器,可以認為是

Apache的擴展,但是可以獨立于Apache運行,

3) Nginx

Nginx是俄羅斯人撰寫的十分輕量級的HTTP服務器,Nginx,它的發音為“engine X”,是一個高性能的HTTP和反向代理服務器,同時也是一個IMAP/POP3/SMTP 代理服務器,

區別

1) Apache與Tomcat的比較

相同點:

兩者都是Apache組織開發的兩者都有HTTP服務的功能兩者都是免費的

不同點:

Apache是專門用了提供HTTP服務的,以及相關配置的(例如虛擬主機、URL轉發等等),而Tomcat是Apache組織在符合Java EE的JSP、Servlet標準下開發的一個JSP服務器.

Apache是一個Web服務器環境程式,啟用他可以作為Web服務器使用,不過只支持靜態網頁如

(ASP,PHP,CGI,JSP)等動態網頁的就不行,如果要在Apache環境下運行JSP的話就需要一個解釋器來執行JSP網頁,而這個JSP解釋器就是Tomcat,

Apache:側重于HTTPServer ,Tomcat:側重于Servlet引擎,如果以Standalone方式運行,功能上與Apache等效,支持JSP,但對靜態網頁不太理想;

Apache是Web服務器,Tomcat是應用(Java)服務器,它只是一個Servlet(JSP也翻譯成Servlet)容器,可以認為是Apache的擴展,但是可以獨立于Apache運行,

實際使用中Apache與Tomcat常常是整合使用:

如果客戶端請求的是靜態頁面,則只需要Apache服務器回應請求,

如果客戶端請求動態頁面,則是Tomcat服務器回應請求,

因為JSP是服務器端解釋代碼的,這樣整合就可以減少Tomcat的服務開銷,

可以理解Tomcat為Apache的一種擴展,

2)Nginx與Apache比較

nginx相對于apache的優點

輕量級,同樣起web 服務,比apache占用更少的記憶體及資源

抗并發,nginx 處理請求是異步非阻塞的,而apache 則是阻塞型的,在高并發下nginx 能保持低資源低消耗高性能高度模塊化的設計,撰寫模塊相對簡單提供負載均衡

社區活躍,各種高性能模塊出品迅速

apache 相對于nginx 的優點

apache的 rewrite 比nginx 的強大 ;

支持動態頁面;

支持的模塊多,基本涵蓋所有應用;

性能穩定,而nginx相對bug較多,

兩者優缺點比較

Nginx 配置簡潔, Apache 復雜 ;

Nginx 靜態處理性能比 Apache 高 3倍以上 ;Apache 對 PHP 支持比較簡單,Nginx 需要配合其他后端用;

Apache 的組件比 Nginx 多 ;

apache是同步多行程模型,一個連接對應一個行程;

nginx是異步的,多個連接(萬級別)可以對應一個行程;

nginx處理靜態檔案好,耗費記憶體少;

動態請求由apache去做

nginx只適合靜態和反向;

Nginx適合做前端服務器,負載性能很好;

Nginx本身就是一個反向代理服務器 ,且支持負載均衡

總結

1)Nginx優點:負載均衡、反向代理、處理靜態檔案優勢,nginx處理靜態請求的速度高于

apache;

2)Apache優點:相對于Tomcat服務器來說處理靜態檔案是它的優勢,速度快,Apache是靜態解

析,適合靜態HTML、圖片等,

3)Tomcat:動態決議容器,處理動態請求,是編譯JSP\Servlet的容器,Nginx有動態分離機制,靜態請求直接就可以通過Nginx處理,動態請求才轉發請求到后臺交由Tomcat進行處理,

Apache在處理動態有優勢,Nginx并發性比較好,CPU記憶體占用低,如果rewrite頻繁,那還是Apache較適合,

日常作業中,一般的專案還是用nginx+tomcat來做會多一點,

44.什么是代理服務器:

能當替用戶去訪問公網,并且能把訪問到的資料快取到服務器本地,等用戶下次再訪問相同的資 源的時候,代理服務器直接從本地回應給用戶,當本地沒有的時候,我代替你去訪問公網,我接 收你的請求,我先在我自已的本地快取找,如果我本地快取有,我直接從我本地的快取里回復 你,如果我在我本地沒有找到你要訪問的快取的資料,那么代理服務器就會代替你去訪問公網

45.部署一個LVS集群環境都需要什么組件

director server:調度服務器,將負載分發到real server的服務器,該主機需要安裝ipvsadm,創建虛擬機集群并添加real server

real server:真實服務器,真正提供應用,服務的服務器,該主機需要部署LNMP或者LAMP,做DR模式的集群還需要設定VIP和防止ARP沖突

可以結合keepalived軟體實作主備LVS調度器

VIP:虛擬IP地址,公布給用戶訪問的虛擬IP地址

RIP:真實IP地址,集群節點上使用的IP地址

DIP:調度器連接節點服務器的IP地址

46.Lvs的幾種模式區別

模式:LVS/NAT模式 LVS/DR模式 LVS/TUN模式 LVS:fullnat模式

LVS/NAT模式:

原理:

客戶端將訪問vip報文發送給LVS服務器

LVS服務器將請求報文的目的地址修改為后端真實服務器(DNAT),發送給后端的真實服務器;

后端服務器在處理完之后將回應的報文回傳給客戶端,但卻不在同一網段

LVS根據自己的追蹤技術將后端真實服務回應客戶端的報文源地址改為自己的IP地址(SNAT),發送給客戶端

優缺點:

安全,可以實作不同網段的資料請求,但請求和相應報文都需要通過負載均衡調度器,當服務器節點 數目升到20時,調度器本身就可能成為系統的瓶頸

LVS/DR模式:

原理:

客戶端將訪問的vip報文發送給LVS服務器

LVS服務器將請求報文的mac地址改為后端真實服務器的mac地址

后端真實服務器得到訪問報文后進行IP查看,再確認自己有vip之后進行請求處理;

后端真實服務器在處理完資料請求后,直接回應客戶端

優缺點:

LVS服務器只是修改了mac地址,所以非常快速,并且LVS不會成為瓶頸

但配置的要求比較高,LVS服務器必須和真實服務器處于同一vlan中后端真實服務器直接回應客戶端,對于后端真實服務器本身來說并不安全

LVS/TUN模式:

原理:

客戶端將訪問vip報文發送給LVS服務器

LVS服務器將請求報文重新封裝,發送給后端真實服務器

后端真實服務器將請求報文解封,在確認自身有vip之后進行請求處理

后端真實服務器在處理完資料請求之后,直接回應客戶端

優缺點:

快速,但不安全,不能抵擋DOS攻擊,跨地區回答之網路延遲很大訪問效率速度更低

LVS-fullnat模式:

原理:

客戶端將訪問vip報文發送給LVS服務器

LVS服務器將請求報文的目的地址修改為后端真實服務器(DNAT),發送給客戶端

后端服務器在處理完之后要將回應的報文回傳給LVS

LVS將回傳的資料包源地址改為自己(SNAT),目的地址改為客戶端(DNAT),發送給客戶端

fullnat模式與nat模式相似但nat模式只做兩次地址轉換,fullnat卻做了四次

47.LVS處理的是什么資料?

Lvs大多處理的是資料庫的資料

48.LVS集群組成:

前端:負載均衡層

由一臺或者多臺負載均衡調度器構成

中間:服務器群組層

由一組實際運行應用服務的服務器組成

底端:資料共享存盤層

提供共享存盤空間的存盤區域

調度演算法:總共十種,常用四種

輪詢:將客戶端請求平均分法給所有的real server

加權輪詢:根據real server 權重進行輪詢調度

最少連接:選擇連接數最少的服務器

加權最少連接:根據real server權重值,選擇連接數最少的

49.LVS負載均衡十種演算法

(1). 輪循調度 rr

均等地對待每一臺服務器,不管服務器上的實際連接數和系統負載

(2). 加權輪調 wrr

調度器可以自動問詢真實服務器的負載情況,并動態調整權值

(3). 最少鏈接 lc

動態地將網路請求調度到已建立的連接數最少的服務器上如果集群真實的服務器具有相近的系統性能,采用該演算法可以較好的實作負載均衡

(4). 加權最少鏈接 wlc

調度器可以自動問詢真實服務器的負載情況,并動態調整權值帶權重的誰不干活就給誰分配,機器配置好的權重高

(5). 基于區域性的最少連接調度演算法 lblc

這個演算法是請求資料包的目標 IP 地址的一種調度演算法,該演算法先根據請求的目標 IP 地址尋找最近的該目標 IP 地址所有使用的服務器,如果這臺服務器依然可用,并且有能力處理該請求,調度器會盡量選擇相同的服務器,否則會繼續選擇其它可行的服務器

(6). 復雜的基于區域性最少的連接演算法 lblcr

記錄的不是要給目標 IP 與一臺服務器之間的連接記錄,它會維護一個目標 IP 到一組服務器之間的映射關系,防止單點服務器負載過高,

(7). 目標地址散列調度演算法 dh

該演算法是根據目標 IP 地址通過散列函式將目標 IP 與服務器建立映射關系,出現服務器不可用或負載過高的情況下,發往該目標 IP 的請求會固定發給該服務器,

(8). 源地址散列調度演算法 sh

與目標地址散列調度演算法類似,但它是根據源地址散列演算法進行靜態分配固定的服務器資源,

(9). 最少期望延遲 sed

不考慮非活動鏈接,誰的權重大,優先選擇權重大的服務器來接收請求,但權重大的機器會比較忙

(10). 永不排隊 nq

無需佇列,如果有realserver的連接數為0就直接分配過去

50.LVS目前實作的十種調度演算法:

1)輪詢演算法

2)加權輪詢演算法

3)最少連接演算法

4)加權最少連接

5)源地址散列

6)目標地址散列

7)最少的佇列調度

8)最短的期望的延遲

9)基于區域性的最少連接

10)帶復制的基于區域性的最少連接

51.四層負載均衡和七層負載均衡的區別

1.四層就是基于IP+埠的負載均衡;七層就是基于URL等應用層資訊的負載均衡

2.四層負載均衡,就是根據請求的ip+埠,根據設定的規則,將請求轉發到后端對應的IP+埠上,七層負載均衡,則是在四層基礎上,再去考慮應用層的特征,比如說一個WEB服務器的負載均衡,除了根據IP+80埠來判斷之外,還可以根據七層URL,瀏覽器類別,來決定如何去轉發流量,

3.四層交換機主要分析IP層和TCP/UDP層,實作四層流量負載,這種負載不關心七層的應用協議,七層的交換機除了支持四層之外,還要分析應用層,如HTTP協議、URL、cookie等資訊,四層常見軟體是haproxy,LVS,七層常見軟體是nginx,

4.簡單來說,七層負載均衡走流量,四層負載均衡是不走流量的,效率會更高

5.四層提供終端到終端的連接

6.四層不能修改后端請求的資源型別

52.HAProxy 組態檔有哪些組成部分?

default:為后續的其他部分設定預設引數,預設引數可以被后續部分重置;

frontend:描述集群接收客戶端請求的資訊集合;

backend:描述轉發鏈接的后端服務器集合;

listen:把 frontend 和 backend 結合到一起的完整宣告,

53.lvsHaproxynginx的區別?

lvs作業在4層,消耗記憶體資源低,抗負載能力較強,沒有流量產生,配置簡單,作業穩定,應用較廣,但lvs 軟體本身不支持正則運算式處理,不能做動靜分離,不支持健康檢查

Haproxy基于四層和七層的轉發,是專業的代理服務器,支持虛擬主機,支持Session和Cookie的功能, 效率.負載均衡速度比nginx高但低于lvs,支持TCP協議的負載均衡轉發,負載均衡的策略較多,有8種策略,支持url檢查,健康檢查等

nginx基于七層的轉發,當開啟upstream模塊支持四層轉發,支持并發量大,正則運算式比Haproxy強大,但監控檢查只支持通過埠,無法使用url檢查

Haproxy和Nginx由于可以做七層的轉發,所以URL和目錄的轉發都可以做,在很大并發量的時候選 擇lvs,中小型企業并發量不大可以做nginx或者Haproxy,由于Haproxy配置比較簡單,所以中小企業 更推薦使用Haproxy

54.Keepalived通過什么判斷哪臺主機為主服務器,通過什么方式設定浮動IP?

keepalived首先做初始化檢查state狀態,master為主服務器,backup為備用服務器,然后再對比所有 服務器的priority,誰的優先級高誰就是最終的主服務器

優先級高的服務器會通過IP命令為自己的電腦配置一個提前定義好的浮動IP地址

55.keepalived的作業原理?

利用vrrp的原理進行作業,提供高可用集群服務,keepalived根據優先級選出master主機和slave主 機,當服務器節點例外或出現故障時,keepalived回將故障節點從集群系統中自動剔除,故障節點恢 復之后,keepalived再將器加入到集群系統中,所有作業無需人工干預

56.keepalived是主要應用在哪層

Keepalived是基于VRRP協議的實作,主要用在IP層、TCP層和應用層,

1:IP層:Keepalived會定期向服務器群中的服務器發送一個資料包(既Ping),如果發現IP地址沒有激活,Keepalived便報告這臺服務器失效,并將它從服務器群中剔除,

2:TCP層:類似IP層,只不過這里是檢測服務的埠

3:應用層:Keepalived將根據用戶的設定來檢查服務程式的運行是否正常

57.keepalived啟動后會有幾個行程?

keepalived正常啟動的時候,共啟動3個行程,一個是父行程,負責監控其子進度程,一個是vrrp子行程,另外一個是checkers子行程兩個子問行程都被系統watchlog看管,兩個子行程各自負責復雜自己的事,Healthcheck子行程答檢查各自服務器的健康狀況版,,例如http,lvs,如果healthchecks行程檢查到master上服務不可用了,就會通知權本機上的vrrp子行程,讓他洗掉通告,并且去掉虛擬IP,轉換為BACKUP狀態,

58.keepalived的健康檢查方式

1)keepalived對后端realserver的健康檢查方式主要有以下幾種

TCP_CHECK:作業在第4層,keepalived向后端服務器發起一個tcp連接請求,如果后端服務器沒有回應或超時,那么這個后端將從服務器池中移除,

HTTP_GET:作業在第5層,向指定的URL執行http請求,將得到的結果用md5加密并與指定的md5值比較看是否匹配,不匹配則從服務器池中移除;此外還可以指定http回傳碼來判斷檢測是否成功,HTTP_GET可以指定多個URL用于檢測,這個一臺服務器有多個虛擬主機的情況下比較好用,

SSL_GET:跟上面的HTTP_GET相似,不同的只是用SSL連接

MISC_CHECK:用腳本來檢測,腳本如果帶有引數,需將腳本和引數放入雙引號內,腳本的回傳值需為:

0) 檢測成功

1) 檢測失敗,將從服務器池中移除

2-255)檢測成功;如果有設定misc_dynamic,權重自動調整為 退出碼-2,如退出碼為

200,權重自動調整為198=200-2,SMTP_CHECK:用來檢測郵件服務的smtp的

2)相關配置:

delay_loop 隔多長時間做一次健康檢測,單位為秒connect_timeout 連接超時時間,單位為秒nb_get_retry 檢測失敗后的重試次數,如果達到重試次數仍然失敗,將后端從服務器池中移除,delay_before_retry 失敗重試的間隔時間,單位為秒

59.HTTP原理

HTTP是基于客戶/服務器模式,且面向連接的,典型的HTTP事務處理有如下的程序:

(1)客戶與服務器建立連接;

(2)客戶向服務器提出請求;

(3)服務器接受請求,并根據請求回傳相應的檔案作為應答;

(4)客戶與服務器關閉連接,

客戶與服務器之間的HTTP連接是一種一次性連接,它限制每次連接只處理一個請求,當服務器回傳本次請求的應答后便立即關閉連接,下次請求再重新建立連接,這種一次性連接主要考慮到WWW服務器面向的是Internet中成干上萬個用戶,且只能提供有限個連接,故服務器不會讓一個連接處于等待狀態,及時地釋放連接可以大大提高服務器的執行效率,

HTTP是一種無狀態協議,即服務器不保留與客戶交易時的任何狀態,這就大大減輕了服務器記憶負擔,從而保持較快的回應速度,HTTP是一種面向物件的協議,允許傳送任意型別的資料物件,

它通過資料型別和長度來標識所傳送的資料內容和大小,并允許對資料進行壓縮傳送,當用戶在一個HTML檔案中定義了一個超文本鏈后,瀏覽器將通過TCP/IP協議與指定的服務器建立連接

60.http請求和相應的程序

1)域名決議

首先,瀏覽器會對URL地址進行決議,決議的程序如下:

①瀏覽器快取:首先在瀏覽器的DNS快取中查找域名對應的ip地址;

②系統快取:如果瀏覽器沒有找到需要的域名,則瀏覽器會進行一個系統呼叫,在用戶主機的DNS中進行查找;

③路由器快取:如果用戶主機中沒有找到需要的ip地址,會向路由器發送請求,在路由器的DNS中查找

④ISP快取:如果以上所有的DNS中都沒有找到,則會在ISP(互聯網服務供應商)的DNS快取中查找,一般在這里都能找到,如果沒有則說明用戶輸入的域名有誤

2)瀏覽器與文本服務器建立TCP/UDP連接http是建立在傳輸層的TCP/UDP連接的基礎之上的

3)瀏覽器給web服務器發送一個http請求

一旦傳輸層的連接建立成功,瀏覽器就可以發送請求了,請求的內容包括請求行、回應頭部、空行、回應資料

4)服務器給瀏覽器進行回應

當請求發送后,服務器回給瀏覽器回傳需要的資訊,回傳的資訊主要包括狀態行、回應頭部、空行、請求資料等

5)釋放連接

http1.0:非持久連接,即氫氣回應后立即斷開

http1.1:持久連接,回應成功后仍然在短時間內保持這條連接

6)瀏覽器決議回應資料

瀏覽器決議回應資料后,資料會呈現在瀏覽器中

61.curl的回傳的內容

回傳狀態碼、時間日期、服務版本號、系統、協議的頭部資訊、請求方式、網頁內容的格式、請求變數的物體標簽值(類似于hash值)、字符編碼、文本格式

62.http協議請求url共定義了哪幾種方法

HTTP請求的方法:

HTTP/1.1協議中共定義了八種方法(有時也叫“動作”),來表明Request-URL指定的資源不同的

操作方式

1、OPTIONS

回傳服務器針對特定資源所支持的HTTP請求方法,也可以利用向web服務器發送‘*’的請求來測驗服務器的功能性

2、HEAD

向服務器索與GET請求相一致的回應,只不過回應體將不會被回傳,這一方法可以再不必傳輸整個回應內容的情況下,就可以獲取包含在回應小訊息頭中的元資訊,

3、GET

向特定的資源發出請求,它本質就是發送一個請求來取得服務器上的某一資源,資源通過一組HTTP頭和呈現資料(如HTML文本,或者圖片或者視頻等)回傳給客戶端,GET請求中,永遠不會包含呈現資料,

4、POST

向指定資源提交資料進行處理請求(例如提交表單或者上傳檔案),資料被包含在請求體中,

POST請求可能會導致新的資源的建立和/或已有資源的修改, Loadrunner中對應POST請求函式:web_submit_data,web_submit_form

5、PUT

向指定資源位置上傳其最新內容

6、DELETE

請求服務器洗掉Request-URL所標識的資源

7、TRACE

回顯服務器收到的請求,主要用于測驗或診斷

8、CONNECT

HTTP/1.1協議中預留給能夠將連接改為管道方式的代理服務器,

注意:

1)方法名稱是區分大小寫的,當某個請求所針對的資源不支持對應的請求方法的時候,服務器應

當回傳狀態碼405(Mothod Not Allowed);當服務器不認識或者不支持對應的請求方法時,應回傳狀態碼501(Not Implemented),

2)HTTP服務器至少應該實作GET和HEAD/POST方法,其他方法都是可選的,此外除上述方法,特定的HTTP服務器支持擴展自定義的方法,

63.httpgetpost方法有什么區別

區別:

get請求無訊息體,只能攜帶少量資料

post請求有訊息體,可以攜帶大量資料

攜帶資料的方式:

get請求將資料放在url地址中

post請求將資料放在訊息體中

GET請求請提交的資料放置在HTTP請求協議頭中,而POST提交的資料則放在物體資料中;

GET方式提交的資料最多只能有1024位元組,而POST則沒有此限制

64.HTTP常見狀態碼

狀態碼 功能描述

200 一切正常

301 永久重定向302 臨時重定向

401 用戶名或密碼錯誤

403 禁止訪問(客戶端IP地址被拒絕)

404 檔案不存在

414 請求URI頭部過長

500 服務器內部錯誤

502 Bad Gateway

65.curl命令如何去發一個get請求和post請求,區別是什么,洗掉是什么

Get請求

curl命令 + 請求介面的地址使用curl命令:

curl “http://www.baidu.com” 如果這里的URL指向的是一個檔案或者一幅圖都可以直接下載

到本地

curl -i “http://www.baidu.com” 顯示全部資訊

curl -l “http://www.baidu.com” 只顯示頭部資訊

curl -v “http://www.baidu.com” 顯示get請求全程序決議

Post請求

使用curl命令(通過-d引數,把訪問引數放在里面):

curl -d “param1=value1&pagesize=2” “http://www.baidu.com”

如果傳第二個引數就使用post請求的方式,可以設定超時時間,避免程式卡死

洗掉請求是delete

curl delete http://www.baidu.com

66.請詳細描述http協議原理

http協議:是客戶端與服務端之間通信傳輸資料的基礎,HTTP協議是基于TCP/IP協議之上的協議

原理包括四個程序:

連接:瀏覽器與服務器建立連接,打開一個socket的虛擬檔案,表明連接建立成功

請求:瀏覽器通過socket向服務器提交請求(一般是GET或POST請示命令)

應答:瀏覽器請求提交后,通過HTTP協議傳送給服務器,服務器收到后進行處理將結果又通過

HTTP回傳給客戶端,從而在客戶端顯示出所請求的頁面

關閉連接:當應答結束后,瀏覽器與服務器之間就斷開連接

67.配置httpd網站服務時,快速添加新的虛擬主機

1)為每一個虛擬主機建立一份獨立的組態檔,放到/etc/httpd/conf.d目錄下,組態檔名稱以.conf 結尾

2)配置<VirtualHost IP 埠號>.. ..</VirtualHost>區段標記,其中使用陳述句ServerName指定站點名稱,使用DocumentRoot指定網頁目錄

3)重起httpd服務

68.動態網頁和靜態網頁的區別,基于httpd要支持PHP程式,基于Python程式具備的條件

靜態網頁:瀏覽器訪問到的網頁就是服務端提供的檔案

動態網頁:瀏覽器訪問到的網頁檔案時服務端指定的程式動態生成的網頁檔案

支持PHP的程式:安裝httpd、php軟體包

支持Python程式:安裝httpd、mod_wsgi軟體包,并在配置站點時添加程式呼叫別名

(WSGIScriptAlias)

69.基于httpd架設一個安全web站點的條件

安裝mod_ssl模塊軟體包

提供可用的網站證書、密鑰部署到正確的位置

修改/etc/httpd/conf.d/ssl.conf組態檔,指定站點名、網頁目錄、證書以及密鑰的路徑

70.什么是中間件?什么是jdk

中間件介紹:

中間件是一種獨立的系統軟體或服務程式,分布式應用軟體借助這種軟體在不同的技術之間共享資源中間件位于客戶機/ 服務器的作業系統之上,管理計算機資源和網路通訊

是連接兩個獨立應用程式或獨立系統的軟體,相連接的系統,即使它們具有不同的介面

但通過中間件相互之間仍能交換資訊,執行中間件的一個關鍵途徑是資訊傳遞,通過中間件,應用程式可以作業于多平臺或OS環境,

jdk:jdk是Java的開發工具包,它是一種用于構建在 Java 平臺上發布的應用程式、applet 和組件的開發環境

轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/305818.html

標籤:其他

上一篇:【歷史上的今天】10 月 5 日:Linux 內核正式面世;喬布斯逝世;谷歌發布 Android 6.0

下一篇:高中資訊技術教資:資訊技術教學論

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 面試突擊第一季,第二季,第三季

    第一季必考 https://www.bilibili.com/video/BV1FE411y79Y?from=search&seid=15921726601957489746 第二季分布式 https://www.bilibili.com/video/BV13f4y127ee/?spm_id_fro ......

    uj5u.com 2020-09-10 05:35:24 more
  • 第三單元作業總結

    1.前言 這應該是本學期最后一次寫作業總結了吧。總體來說,對作業的節奏也差不多掌握了,作業做起來的效率也更高了。雖然和之前的作業一樣,作業中都要用到新的知識,但是相比之前,更加懂得了如何利用工具以及資料。雖然之間卡過殼,但總體而言,這幾次作業還算完成的比較好。 2.作業程序總結 相比前兩個單元,此單 ......

    uj5u.com 2020-09-10 05:35:41 more
  • 北航OO(2020)第四單元博客作業暨課程總結博客

    北航OO(2020)第四單元博客作業暨課程總結博客 本單元作業的架構設計 在本單元中,由于UML圖具有比較清晰的樹形結構,因此我對其中需要進行查詢操作的元素進行了包裝,在樹的父節點中存盤所有孩子的參考。考慮到性能問題,我采用了快取機制,一次查詢后盡可能快取已經遍歷過的資訊,以減少遍歷次數。 本單元我 ......

    uj5u.com 2020-09-10 05:35:48 more
  • BUAA_OO_第四單元

    一、UML決議器設計 ? 先看下題目:第四單元實作一個基于JDK 8帶有效性檢查的UML(Unified Modeling Language)類圖,順序圖,狀態圖分析器 MyUmlInteraction,實際上我們要建立一個有向圖模型,UML中的物件(元素)可能與同級元素連接,也可與低級元素相連形成 ......

    uj5u.com 2020-09-10 05:35:54 more
  • 6.1邏輯運算子

    邏輯運算子 1. && 短路與 運算式1 && 運算式2 01.運算式1為true并且運算式2也為true 整體回傳為true 02.運算式1為false,將不會執行運算式2 整體回傳為false 03.只要有一個運算式為false 整體回傳為false 2. || 短路或 運算式1 || 運算式2 ......

    uj5u.com 2020-09-10 05:35:56 more
  • BUAAOO 第四單元 & 課程總結

    1. 第四單元:StarUml檔案決議 本單元采用了圖模型決議UML。 UML檔案可以抽象為圖、子圖、邊的邏輯結構。 在實作中,圖的節點包括類、介面、屬性,子圖包括狀態圖、順序圖等。 采用了三次遍歷UML元素的方法建圖,第一遍遍歷建點,第二、三次遍歷設定屬性、連邊,實作圖物件的初始化。這里借鑒了一些 ......

    uj5u.com 2020-09-10 05:36:06 more
  • 談談我對C# 多型的理解

    面向物件三要素:封裝、繼承、多型。 封裝和繼承,這兩個比較好理解,但要理解多型的話,可就稍微有點難度了。今天,我們就來講講多型的理解。 我們應該經常會看到面試題目:請談談對多型的理解。 其實呢,多型非常簡單,就一句話:呼叫同一種方法產生了不同的結果。 具體實作方式有三種。 一、多載 多載很簡單。 p ......

    uj5u.com 2020-09-10 05:36:09 more
  • Python 資料驅動工具:DDT

    背景 python 的unittest 沒有自帶資料驅動功能。 所以如果使用unittest,同時又想使用資料驅動,那么就可以使用DDT來完成。 DDT是 “Data-Driven Tests”的縮寫。 資料:http://ddt.readthedocs.io/en/latest/ 使用方法 dd. ......

    uj5u.com 2020-09-10 05:36:13 more
  • Python里面的xlrd模塊詳解

    那我就一下面積個問題對xlrd模塊進行學習一下: 1.什么是xlrd模塊? 2.為什么使用xlrd模塊? 3.怎樣使用xlrd模塊? 1.什么是xlrd模塊? ?python操作excel主要用到xlrd和xlwt這兩個庫,即xlrd是讀excel,xlwt是寫excel的庫。 今天就先來說一下xl ......

    uj5u.com 2020-09-10 05:36:28 more
  • 當我們創建HashMap時,底層到底做了什么?

    jdk1.7中的底層實作程序(底層基于陣列+鏈表) 在我們new HashMap()時,底層創建了默認長度為16的一維陣列Entry[ ] table。當我們呼叫map.put(key1,value1)方法向HashMap里添加資料的時候: 首先,呼叫key1所在類的hashCode()計算key1 ......

    uj5u.com 2020-09-10 05:36:38 more
最新发布
  • 【中介者設計模式詳解】C/Java/JS/Go/Python/TS不同語言實作

    * 中介者模式是一種行為型設計模式,它可以用來減少類之間的直接依賴關系,
    * 將物件之間的通信封裝到一個中介者物件中,從而使得各個物件之間的關系更加松散。
    * 在中介者模式中,物件之間不再直接相互互動,而是通過中介者來中轉訊息。 ......

    uj5u.com 2023-04-20 08:20:47 more
  • 露天煤礦現場調研和交流案例分享

    他們集團的資訊化公司及研究院在一個礦區正在做智能礦山的統一平臺的 試點,專案投資大概1億,包括了礦山的各方面的內容,顯示得我們這次交流有點多余。他們2年前開始做智能礦山的規劃,有很多煤礦行業專家的加持,他們的描述是非常完美,但是去年底應該上線的平臺,現在還沒有看到影子。他們確實有很多場景需求,但是被... ......

    uj5u.com 2023-04-20 08:20:25 more
  • 《社區人員管理》實戰案例設計&個人案例分享

    設計是一個讓人夢想成真程序,開始編碼、測驗、除錯之前進行需求分析和架構設計,才能保證關鍵方面都做正確 ......

    uj5u.com 2023-04-20 08:20:17 more
  • 軟體架構生態化-多角色交付的探索實踐

    作為一個技術架構師,不僅僅要緊跟行業技術趨勢,還要結合研發團隊現狀及痛點,探索新的交付方案。在日常中,你是否遇到如下問題 “ 業務需求排期長研發是瓶頸;非研發角色感受不到研發技改提效的變化;引入ISV 團隊又擔心質量和安全,培訓周期長“等等,基于此我們探索了一種新的技術體系及交付方案來解決如上問題。 ......

    uj5u.com 2023-04-20 08:20:10 more
  • 【中介者設計模式詳解】C/Java/JS/Go/Python/TS不同語言實作

    * 中介者模式是一種行為型設計模式,它可以用來減少類之間的直接依賴關系,
    * 將物件之間的通信封裝到一個中介者物件中,從而使得各個物件之間的關系更加松散。
    * 在中介者模式中,物件之間不再直接相互互動,而是通過中介者來中轉訊息。 ......

    uj5u.com 2023-04-20 08:19:44 more
  • 露天煤礦現場調研和交流案例分享

    他們集團的資訊化公司及研究院在一個礦區正在做智能礦山的統一平臺的 試點,專案投資大概1億,包括了礦山的各方面的內容,顯示得我們這次交流有點多余。他們2年前開始做智能礦山的規劃,有很多煤礦行業專家的加持,他們的描述是非常完美,但是去年底應該上線的平臺,現在還沒有看到影子。他們確實有很多場景需求,但是被... ......

    uj5u.com 2023-04-20 08:19:07 more
  • 《社區人員管理》實戰案例設計&個人案例分享

    設計是一個讓人夢想成真程序,開始編碼、測驗、除錯之前進行需求分析和架構設計,才能保證關鍵方面都做正確 ......

    uj5u.com 2023-04-20 08:18:57 more
  • 軟體架構生態化-多角色交付的探索實踐

    作為一個技術架構師,不僅僅要緊跟行業技術趨勢,還要結合研發團隊現狀及痛點,探索新的交付方案。在日常中,你是否遇到如下問題 “ 業務需求排期長研發是瓶頸;非研發角色感受不到研發技改提效的變化;引入ISV 團隊又擔心質量和安全,培訓周期長“等等,基于此我們探索了一種新的技術體系及交付方案來解決如上問題。 ......

    uj5u.com 2023-04-20 08:18:49 more
  • 05單件模式

    #經典的單件模式 public class Singleton { private static Singleton uniqueInstance; //一個靜態變數持有Singleton類的唯一實體。 // 其他有用的實體變數寫在這里 //構造器宣告為私有,只有Singleton可以實體化這個類! ......

    uj5u.com 2023-04-19 08:42:51 more
  • 【架構與設計】常見微服務分層架構的區別和落地實踐

    軟體工程的方方面面都遵循一個最基本的道理:沒有銀彈,架構分層模型更是如此,每一種都有各自優缺點,所以請根據不同的業務場景,并遵循簡單、可演進這兩個重要的架構原則選擇合適的架構分層模型即可。 ......

    uj5u.com 2023-04-19 08:42:41 more