作業第十八周

2022-08-17 21:33:23 字數 4736 閱讀 2863

1、請列出 nginx 常用模組的各個優缺點以及區別

ngx_http_auth_basic_module:實現基於使用者的訪問控制,使用basic機制進行使用者認證,優點:使用登陸對話方塊的方式實現使用者認證,缺點:認證檔案依賴httpd-tools軟體包。

ngx_http_stub_status_module:http狀態統計,優點:可以檢視http活動狀態連線數、總連線數、成功的連線數、總共處理的請求數等,缺點:需要單獨寫個location。

ngx_http_ssl_module:用於nginx支援https協議,優點:支援自簽名證書和萬用字元證書,缺點:使用低版本openssl有安全漏洞。

2、請寫出使用者通過 nginx 訪問的工作過程

1、瀏覽器輸入**,通過dns伺服器將網域名稱解析成ip位址。

2、ip位址路由到nginx伺服器,經過tcp三次握手後傳送http請求報文。

3、nginx伺服器收到請求報文後,根據資源型別將處理請求直接處理或**給後端伺服器。

4、後端伺服器將處理結果返回給nginx伺服器。

5、nginx伺服器將響應報文發給客戶端,通過四次揮手關閉tcp連線,完成響應請求。

6、使用者瀏覽器呈現響應頁面。

3、請寫出實現 nginx-https 訪問得步驟過程

1.客戶端發起https請求

客戶端訪問某個web端的https位址,一般都是443埠

2.服務端的配置

採用https協議的伺服器必須要有一套證書,可也通過一些組織申請,也可也自己製作,目前國內很多**都是自己製作的,當你訪問乙個**的時候提示證書不可信任就表示證書是自己做的,證書就是乙個公鑰和私鑰匙,就像一把鎖和鑰匙,正常情況下只有你的鑰匙才可也開啟你的鎖,你可也把這個送給別人讓他鎖住乙個箱子,裡面放滿了錢或秘密,別人不知道裡面放了什麼而且別人也打不開,只有你的鑰匙是可也開啟的。

3.傳送證書

服務端給客戶端傳遞證書,其實就是公鑰,裡面包含了很多資訊,例如證書得到頒發機構、過期時間等等。

4.客戶端解析證書

這部分工作是由客戶端完成的,首先驗證公鑰的有效性,比如頒發機構、過期時間等等,如果發現異常則會彈出乙個警告框提示資訊證書可能存在問題,如果證書沒有問題就生成乙個隨機值,然後用證書對該隨機值進行加密,就像2步驟所說把隨機值鎖起來,不讓別人看到。

5.傳送4步驟的加密資料

就是將用證書加密後的隨機值傳遞給伺服器,目的就是為了讓伺服器得到這個隨機值,以後客戶端和服務端的通訊就可也通過這個隨機值進行加密解密了。

6.服務端解密資訊

服務端用私鑰解密5步驟的隨機值之後,得到客戶端傳過來的隨機值(私鑰),然後把內容通過該值進行對稱加密,對稱加密就是將資訊和私鑰通過演算法混合在一起,這樣除非你知道私鑰,不然是無法獲取其內部的內容,而正好客戶端和服務端都知道這個私鑰,所以只要機密演算法夠複雜就可以保證資料的安全性。

7.傳輸加密後的資訊

服務端將用私鑰加密後的資料傳遞給客戶端,客戶端可也被還原出原資料內容。

8.客戶端加密資訊

客戶端用之前生成的私鑰獲解密服務端傳遞過來的資料,由於資料一直是加密的,因此即使第三方獲取到資料也無法知道其詳細內容。

4、請寫出隱藏 nginx 版本號得過程

修改server欄位

如果想自定義響應報文的nginx版本資訊,需要修改原始碼檔案,重新編譯

如果nginx配置檔案中的字段設定為server_tokens on,請修改 src/core/nginx.h 修改13-14行,如下示例

[root@centos8-1 nginx-1.18.0]$pwd

/usr/local/src/nginx-1.18.0

[root@centos8-1 nginx-1.18.0]$vim src/core/nginx.h

#define nginx_version "1.1999"     ##自定義修改版本號

#define nginx_ver "zhanginx/" nginx_version   ##自定義修改版本資訊

如果nginx配置檔案中的字段設定為server_tokens on,請修改 src/http/ngx_http_header_filter_module.c

第49行,如下示例:

####自定義修改版本

修改完之後回到nginx原始碼包裡面,然後重新編譯即可

[root@centos8-1 nginx-1.18.0]$nginx -v   ##編譯完成測試

nginx version: zhanginx/1.1999

[root@centos8-2 ~]$curl 10.0.0.8/test.php -i     ##編譯完成測試

注:src路徑是在nginx原始碼包解壓完成cd進去的

5、請寫出 nginx 各種優化引數。以及每個引數得作用是什麼

(1)worker_processes #啟動nginx工作程序的數量,一般設為和cpu核心數相同

(2)worker_cpu_affinity #將nginx工作程序繫結到指定的cpu核心,預設nginx是不進行程序繫結的。

(3)worker_priority #工作程序優先順序

(4)worker_rlimit_nofile #所有worker程序能開啟的檔案數量上限

(5)gzip on #開啟檔案壓縮

(6)keepalive_requests #允許最大請求的數量 keepalive_timeout #長連線超時時間

(7)use epoll  #使用epoll模式

(8)multi-accept on  #盡可能多的接受使用者請求

(9)tcp_nopush on   #防止網路阻塞

修改server欄位

如果想自定義響應報文的nginx版本資訊,需要修改原始碼檔案,重新編譯

如果nginx配置檔案中的字段設定為server_tokens on,請修改 src/core/nginx.h 修改13-14行,如下示例

[root@centos8-1 nginx-1.18.0]$pwd

/usr/local/src/nginx-1.18.0

[root@centos8-1 nginx-1.18.0]$vim src/core/nginx.h

#define nginx_version "1.1999"     ##自定義修改版本號

#define nginx_ver "zhanginx/" nginx_version   ##自定義修改版本資訊

如果nginx配置檔案中的字段設定為server_tokens on,請修改 src/http/ngx_http_header_filter_module.c

第49行,如下示例:

####自定義修改版本

修改完之後回到nginx原始碼包裡面,然後重新編譯即可

[root@centos8-1 nginx-1.18.0]$nginx -v   ##編譯完成測試

nginx version: zhanginx/1.1999

[root@centos8-2 ~]$curl 10.0.0.8/test.php -i     ##編譯完成測試

注:src路徑是在nginx原始碼包解壓完成cd進去的

演算法作業 39 2017 6 21第十八周

101.symmetric tree given a binary tree,check whether it is a mirror of itself ie,symmetric around its center for example,this binary tree 1,2,2,3,4,4,...

第十八周學習筆記

匹配兩幅影象 4.1 點和塊 點特徵可以用來尋找乙個不同影象中的對應位置的稀疏集合 獲取特徵點及其之間的對應關係的兩種方法 關鍵點檢測和匹配的四個階段 4.1.1 特徵檢測器 最簡單的匹配策略 e ws sd u iw x i i 1 xi u i0 xi 2e delta u sum i w x ...

第十八周學習筆記

資料庫日誌備份還原 一種方法為還原表資料,使用select into outfile 命令成功備份表資料後,產生的副本檔案是指定格式的文字檔案,該文字檔案中僅僅包含 表記錄資訊 1.首先把銀行賬戶account 表中的記錄匯出到acoumt.ut 文字檔案,然後使用delete全今利除acot 表中...