Nginx 使用札記

2021-09-26 14:13:14 字數 3833 閱讀 9525

nginx是俄羅斯人 igor sysoev為俄羅斯訪問量第二的rambler.ru站點開發的乙個十分輕量級的http伺服器。它是乙個高效能的http和反向**伺服器,同時也可以作為imap/pop3/smtp的**伺服器。nginx使用的是bsd許可。

nginx 以事件驅動的方式編寫,所以有非常好的效能,同時也是乙個非常高效的反向**、負載平衡。

nginx 因為它的穩定性、豐富的模組庫、靈活的配置和低系統資源的消耗而聞名。

nginx適合用來做mongrel clusters 的前端 http 響應。

nginx的特點( ):

同時,nginx也可以實現高效的反向**、負載均衡。前端可以用nginx做些什麼?

nginx配置檔案主要分成四個部分:

他們之間的關係式:server繼承main,location繼承server;upstream既不會繼承指令也不會被繼承。

如下是乙份通用的配置和詳解:

#定義 nginx 執行的使用者和使用者組,預設由 nobody 賬號執行, windows 下面可以注釋掉。 

user nobody;

#nginx程序數,建議設定為等於cpu總核心數。可以和worker_cpu_affinity配合

worker_processes 1;

#全域性錯誤日誌定義型別,[ debug | info | notice | warn | error | crit ]

#error_log logs/error.log;

#error_log logs/error.log notice;

#error_log logs/error.log info;

#程序檔案,window下可以注釋掉

#pid logs/nginx.pid;

# 乙個nginx程序開啟的最多檔案描述符(控制代碼)數目,理論值應該是最多開啟檔案數(系統的值ulimit -n)與nginx程序數相除,

# 但是nginx分配請求並不均勻,所以建議與ulimit -n的值保持一致。

worker_rlimit_nofile 65535;

#工作模式與連線數上限

events

#設定http伺服器

#虛擬主機的配置

server

#error_page 404 /404.html;

# redirect server error pages to the static page /50x.html

# error_page 500 502 503 504 /50x.html;

location = /50x.html

# 快取時間設定

# js和css快取時間設定

location ~ .*.(js|css)?$

#**配置

#}}

示例:

location ~* /js/.*/.js說明:

優先順序:

(location =) > (location 完整路徑) > (location ^~ 路徑) > (location ,* 正則順序) > (location 部分起始路徑) > (/)

詳解:

# 對 「/」 啟用反向**

location /

舉例:

location ^~ /service/
簡化:

location /proxy/
如果相對網域名稱或引數字串起作用,可以使用全域性變數匹配,也可以使用proxy_pass反向**。

表明看rewrite和location功能有點像,都能實現跳轉,主要區別在於rewrite是在同一網域名稱內更改獲取資源的路徑,而location是對一類路徑做控制訪問或反向**,可以proxy_pass到其他機器。很多情況下rewrite也會寫在location裡,它們的執行順序是:

如果其中某步uri被重寫,則重新迴圈執行1-3,直到找到真實存在的檔案;迴圈超過10次,則返回500 internal server error錯誤。

rewrite規則後邊,通常會帶有flag標誌位:

last 和 break 區別:

rewrite常用正則:

d :匹配數字

^ : 匹配字串的開始

$ : 匹配字串的介紹

: 重複n次

[c] : 匹配單個字元c

[a-z] : 匹配a-z小寫字母的任意乙個

可以使用 ()來進行分組,可以通過 $1的形式來引用。

示例:

location /proxy/
示例:

upstream test.net
upstream是nginx的http upstream模組,這個模組通過乙個簡單的排程演算法來實現客戶端ip到後端伺服器的負載均衡。

nginx的負載均衡模組目前支援4種排程演算法:

upstream可以設定每個後端伺服器在負載均衡排程中的狀態,支援的狀態引數:

注,當負載排程演算法為ip_hash時,後端伺服器在負載均衡排程中的狀態不能是weight和backup。

頁面快取設定指令:

proxy_cache_path:指定快取的路徑和一些其他引數,快取的資料儲存在檔案中,並且使用**url的雜湊值作為關鍵字與檔名。

proxy_cache_path /data/nginx/cache/webserver levels=1:2 keys_zone=webserver:20m max_size=1g;
levels引數指定快取的子目錄數。 keys_zone指定活動的key和元資料儲存在共享池(webserver為共享池名稱,20m位共享池大小), inactive引數指定的時間內快取的資料沒有被請求則被刪除,預設inactive為10分鐘 ·max_size指定快取空間的大小。

server 

}}

Ubuntu 使用札記

ubuntu 16.04.4 lts,安裝在一塊 1tb 的seagate行動硬碟上 之前的故事 把ubuntu裝進行動硬碟裡 雖然對 有點感覺,不過對 ubuntu 的使用我是真的陌生 寫一篇札記記錄下吧 2018.5.13 因為 boot 掛載的分割槽太小導致公升級的時候出了空間不足的問題 昨天...

厚黑學 札記

見你自然知孝,見兄自然知悌。厚如城牆,黑如煤炭。明師難遇,至道難聞。曾子 大學 治國平天下 孔子後裔子思 中庸 平和位育 天人 神人 至人 聖人和賢人 遞減 讀書三訣 以古為敵,以古為友和以古為徒。釋迦門下十二圓覺,孔子門下四科十哲。求官六字真言 空 空閒 貢 鑽 衝 吹牛 捧 恐和送。善捧者恐之中...

ORACLE小白札記

以前都是dba 建好db,配置好db後給我使用。現在自己學習orcale db,發現配置和管理並不是一件簡單的事情。我在這裡記錄,我遇到問題的點點滴滴。oracle 服務端os oracle版本 10g 在安裝過程中,遇到問題 1 在檢查伺服器作業系統時,提示 當前系統為 6.1,oracle中引數...