1. 程式人生 > >Nginx 配置信息整理及實驗步驟驗證

Nginx 配置信息整理及實驗步驟驗證

郵件服務器 俄羅斯 代理服務器 配置文件 number

Nginx 配置信息整理及實驗步驟驗證

Nginx是一款輕量級的WEB服務器反向代理服務郵件服務器(IMAP/POP3)代理服務器,由俄羅斯的程序設計師Igor Sysoev所開發,其特點是占有內存少,並發能力強,目前應用廣泛。

Nginx基礎

Nginx配置文件個人記錄

技術分享

技術分享

USER:定義用戶和組信息

Work_processes :定義核心數量(等於或小於總核心數)

Worker_cpu_affinity cpumask ...; (使用cpumask進行描述標識核心綁定的核心,也可直接設置auto)

CPU MASK:

00000001:0號cpu

00000010:1號cpu

也可直接標識為:

0001:0號cpu

0010:1號cpu

Worker_priority number;(設定worker進程的nice值,提高優先級【-20,19】

Worker_rlimit_nofile number;(worker進程能打開文件的上限)

Error_log /usr/local/nginx/logs/error.log info;(定義error_log錯誤日誌它有幾個級別【debug|info|notice|warn|error|crit】其中crit記錄的信息最少,依次向前會獲得更加詳細的錯誤信息

events {

Use epoll; (nginx默認就是epoll模式)

worker_connections 1024; (單個進程最大連接數,根據硬件調整到最佳狀態)

}

Accep_mutex on | off;(處理新的連接請求的方法;on意味由各worker輪流處理請求,off意味著每個新請求的到達都會通知所有的worker進程;

技術分享

http段描述

技術分享

Log_format 日誌格式描述,設定輸出的信息內容

Access_log /var/log/nginx/access.log main; (設置訪問日誌輸出的路徑)

Sendfile on;(開啟高效文件傳輸模式)

Tcp_nodelay on | off (在keepalived模式下:off會有延遲 on 將不打包直接發送無延遲)

Tcp_nopush on | off (開啟等待首部一起發送)

Keepalive_timeout 65;(長鏈接超時時間)

Keepalive_requests 100; (一次長鏈接允許請求的資源最大數量,默認100)

Keepalive_disable msie6 (對那種瀏覽器禁用長鏈接)

Send_timeout 60; (發送響應的超時時間)

Include mime.types; (Include載入文件擴展名與文件類型映射表)

Default_type application/octet-srteam; (默認文件類型)

以下是SERVER配置端的描述

Server {

Listen 80;(監聽某個端口或某個地址的某個端口)

Server_name www.stu56.xin;(設置服務器主機名稱)(default_server默認虛擬主機)

Root /web/www/test/; (設置站端根目錄)

Index index.html;(設置默認資源)

}

Location 【 = | ~ | ~* | ^~ 】(在server配置中會有多個location段,用於實現URI到文件系統的路徑映射;nginx會根據用戶請求的URI來檢查定義的所有location,並找出一個最佳匹配,而後應用其配置)

= :對URI做精確匹配;

Location = /admin/ {

...

}

~:對URI做正則表達式模式匹配,區分字符大小寫;

~*:對URI做正則表達式模式匹配,不區分字符大小寫;

^~:對URI的左半部分做匹配檢查,不區分字符大小寫;

不帶符號:匹配起始於此URI的左右URI;

匹配優先級:=,^~,~/~*,不帶符號;

}

Ngx_http_access_module模塊

實現基於ip的訪問控制功能,給網頁設置用戶加密

使用htpasswd 創建密碼文件

-c :創建一個加密文件 -m:默認采用MD5算法加密

技術分享

技術分享

技術分享

設置白名單:放行172.16.250.76 拒絕 172.16.253.162;

設置nginx的狀態status頁面

技術分享

技術分享

Ngx_http_gzip_module

Gzip on; 開啟gzip壓縮輸出

Gzip_http_version 1.0; 壓縮版本(默認1.1)

Gzip_comp_level 3;壓縮等級

Gzip_types application/javascript; 壓縮類型,

技術分享

技術分享

技術分享

用文件測試後,會有一定壓縮比例,有助於生產環境中降低帶寬占用

Ngx_http_rewrite_module 將用戶請求的URI基於regex所描述的模式進行檢查,而後完成替換

Rewrite_log on | off (是否開啟重寫日誌記錄)

技術分享

Ngx_http_referer_module模塊;

Valid_referers none | blocked |server_names | srting...

None :請求報文首部沒有referer首部;

Blocked:請求報文的referer首部沒有值

Server_names:參數,其可以有值作為主機名或主機名模式;

Arbitrary_string: 直接字符串,但可以用*作通配符

Reqular expression :被指定的正則表達式模式匹配到的字符串:要用~打頭,例如~.*\.magedu\.com;

以下是利用referers模塊做的防盜鏈功能:

已經有配置好的倆臺機器

在進行測試的盜鏈機器上插入一段另一臺機器的圖片鏈接

技術分享

為限制前圖片可以正常顯示

技術分享

以下是對server進行配置 加入referers項進行匹配,匹配到的進行路徑重寫,也可以直接做return返回錯誤

技術分享

以下是測試的信息

技術分享

技術分享

Ngx_http_ssl_module

在nginx上做https加密訪問

Ssl on | off 開啟或者關閉https

這裏配置保留80與443端口,保證http與https同時可以工作,所以對ssl on進行了註銷;

Ssl_certiflcate_file; 當前虛擬主機使用pem格式文件

Ssl_certificate_kye ; 當前虛擬主機上與其證書匹配的私鑰文件;

Ssl_prottocols sslv3 ; 設置ssl協議版本,默認為tlsv1,tlsv1.1,tlsv1.2

Ssl_session_cache off | none | builtin[:size] | [shard:name:size] 設置ssl緩存類型

Builtin[:size]:使用openssl 內建的緩存,此緩存為每個worker進程私有

[shared:name:size]:在各worker之間使用一個共享的緩存

(其中共享的緩存效率更高)

Ssl_session_timeout ; (客戶端一側的連接可以復用ssl_session_cache中緩存的ssl參數的有效時長)

技術分享

技術分享


Nginx 配置信息整理及實驗步驟驗證