目錄
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.Nginx和apache的區別?
相同點:
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.nginx的upstream模塊在組態檔中的核心配置是什么
定義后端服務器組 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 數量1pipeline.batch.size 每次 input 數量125path.confifig 過濾組態檔目錄confifig.reload.automatic 自動重新加載被修改配置 falseor trueconfifig.reload.interval 組態檔檢查時間path.logs 日志輸出路徑http.host 系結主機地址,用戶指標收集“127.0.0.1”http.port 系結埠5000-9700log.level 日志輸出級別 , 如果 confifig.debug 開啟,這里一定要是 debug 日志infolog.format 日志格式plainpath.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.jzxue.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.gz2. 解壓此檔案后,找到 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 install1. 修改 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 ( 配置段位 ): httpNginx 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 規則中 last、break、redirect、permanent 的含義,
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.Squid、Varinsh和Nginx有什么區別,作業中你怎么選擇?
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.講述一下Tomcat8005、8009、8080三個埠的含義?
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.Tomcat和Resin有什么區別,作業中你怎么選擇?
區別: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.lvs、Haproxy與nginx的區別?
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.http的get和post方法有什么區別
區別:
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
下一篇:高中資訊技術教資:資訊技術教學論
