Nginx 教程 基本概念

2021-09-11 09:57:29 字數 4169 閱讀 5491

英文:netguru,翻譯:開源中國

www.oschina.net/translate/nginx-tutorial-basics-concepts

我們會告訴你 nginx 是如何工作的,其背後的概念有哪些,以及如何優化它以提公升應用程式的效能。還會告訴你如何安裝,如何啟動、執行。

這個教程包括三節:

我們的目標是建立一系列教程,讓你可以輕鬆找到特定主題的正確配置,如 gzip、ssl 等,或者直接瀏覽一下那些配置。為了獲得最佳的學習體驗,我們建議你在自己的機器上安裝 nginx,並親手實戰一下。

nginx 最初是作為乙個 web 伺服器建立的,用於解決 c10k 的問題。作為乙個 web 伺服器,它可以以驚人的速度為您的資料服務。但 nginx 不僅僅是乙個 web 伺服器,你還可以將其用作反向**,與較慢的上游伺服器(如:unicorn 或 puma)輕鬆整合。你可以適當地分配流量(負載均衡器)、流**、動態調整影象大小、快取內容等等。

基本的 nginx 體系結構由 master 程序和其 worker 程序組成。master 讀取配置檔案,並維護 worker 程序,而 worker 則會對請求進行實際處理。

要啟動 nginx,只需輸入:

[sudo] nginx

當你的 nginx 例項執行時,你可以通過傳送相應的訊號來管理它:

[sudo] nginx -s signal

可用的訊號:

nginx 的配置檔案,預設的位置包括:

配置檔案的由下面的部分構成:

指令– 可選項,包含名稱和引數,以分號結尾

gzip on;

上下文– 分塊,你可以宣告指令 – 類似於程式語言中的作用域

worker_processes 2; # 全域性上下文指令

http 上下文描述。

root, location, 和 try_files 指令

root 指令

root 指令設定請求的根目錄,允許 nginx 將傳入請求對映到檔案系統。

server {

listen 80;

server_name netguru.co;

root /var/www/netguru.co;

根據給定的請求,指定 nginx 伺服器允許的內容

netguru.co:80/index.html # returns /var/www/netguru.co/index.html

netguru.co:80/foo/index.html # returns /var/www/netguru.co/foo/index.html

location 指令

location指令根據請求的 uri 來設定配置。

location [modifier] path

location /foo/ {

如果沒有指定修飾符,則路徑被視為字首,其後可以跟隨任何東西。

以上例子將匹配

/foo

/fooo

/foo123

/foo/bar/index.html

此外,在給定的上下文中可以使用多個 location 指令。

server {

listen 80;

server_name netguru.co;

root /var/www/netguru.co;

location / {

return 200 "root";

location /foo/ {

return 200 "foo";

netguru.co:80 / # => "root"

netguru.co:80 /foo # => "foo"

netguru.co:80 /foo123 # => "foo"

netguru.co:80 /bar # => "root"

nginx 也提供了一些修飾符,可用於連線 location。這些修飾符將影響 location 模組使用的地方,因為每個修飾符都分配了優先順序。

= - exact match

^~ - preferential match

~ && ~* - regex match

no modifier - prefix match

nginx 會先檢查精確匹配。如果找不到,我們會找優先順序最高的。如果這個匹配依然失敗,正規表示式匹配將按照出現的順序進行測試。至少,最後乙個字首匹配將被使用。

location /match {

return 200 'prefix match: matches everything that starting with /match';

location ~* /match[0-9] {

return 200 'case insensitive regex match';

location ~ /match[0-9] {

return 200 'case sensitive regex match';

location ^~ /match0 {

return 200 'preferential match';

location = /match {

return 200 'exact match';

/match/ # => 'exact match'

/match0 # => 'preferential match'

/match1 # => 'case insensitive regex match'

/match1 # => 'case sensitive regex match'

/match-abc # => 'prefix match: matches everything that starting with /match'

try_files 指令

嘗試不同的路徑,找到乙個路徑就返回。

try_files $uri index.html =404;

所以對於 /foo.html 請求,它將嘗試按以下順序返回檔案:

$uri ( /foo.html )

index.html

如果什麼都沒找到則返回 404

有趣的是,如果我們在伺服器上下文中定義 try_files,然後定義匹配的所有請求的 location —— try_files 將不會執行。

這是因為在伺服器上下文中定義的 try_files 是它的 pseudo-location,這是最不可能的位置。因此,定義 location/ 將比 pseudo-location 更具體。

server {

try_files $uri /index.html =404;

location / {

因此,你應該避免在 server 上下文**現 try_files:

server {

location / {

try_files $uri /index.html =404;

Nginx 教程 1 基本概念

效能管理 提公升速度的訣竅。我們將會講解 gzip 快取 緩衝區以及超時設定。ssl 設定 講解用 https 來提供內容的設定步驟。quit 優雅關閉 等待 worker 執行緒完成處理 reload 過載配置檔案 reopen 重新開啟日誌檔案 usr local etc nginx nginx...

nginx基本概念介紹

1 nginx主要為優化效能,是一種反向 服 負載均衡務器。有報告表明能支援高達 50,000 個併發連線數。反向 伺服器 nginx 最常的用途是提供反向 服務,那麼什麼反向 呢?正向 相信很多大陸同胞都在這片神奇的土地上用過了,原理大致如下圖 伺服器作為客戶端這邊的中介接受請求,隱藏掉真實的客戶...

基本概念 C 基本概念

由於工作中需要用到c 編寫的一些工具,有時候需要根據需求修改或者定製工具,所以現在不得不學習一下c 的基礎語法,此為筆記,不成章法!機器語言 組合語言 高階語言 面向過程的程式設計方法 物件導向的程式設計方法 泛型程式設計方法 1 演算法設計 2 源程式編輯 3 編譯 4 連線 5 執行除錯 輸入裝...