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 表中...