nginx 是一款高效能的 web 伺服器軟體,主要用於提供網上資訊瀏覽服務,為高併發**的應用場景而設計,可以部署在 linux、macos 和 windows 等作業系統中,它的優點包括效能高、穩定性好、結構模組化、配置簡單以及資源消耗非常低等。擁有 https 訪問、gzip 壓縮、虛擬主機和 url 重寫等功能,不但可以搭配 fastcgi 程式處理動態請求,還可以用於**、反向**、負載均衡和快取服務等功能。
nginx 提供的動靜分離是指把動態請求和靜態請求分開,合適的伺服器處理響應的請求,是整個系統的效能、效率更高。
nginx 可以根據配置對不同的請求進行不同**,這是動靜分離的基礎。靜態請求對應的靜態資源可以直接放在 nginx 上做緩衝,更好的做法是放在響應的緩衝伺服器上。動態請求由響應的後端伺服器處理。
upstream test
server
# 所有靜態請求都由 nginx 處理
}
nginx 的配置都寫在nginx.conf
的檔案裡,從 nginx 的配置指令作用域來講,分為 5 個作用於塊,分別是:
在全域性作用域塊
中配置通用的 nginx 配置,比如 nginx 的使用者組資訊, nginx 的併發程序數,日誌存放位置等。
# nginx 使用者及組: 使用者 組。 windows 下不指定
user nginx nginx;
# 工作程序:數目。根據硬體調整,通常等於 cpu 數量或者 2 倍與 cpu。
worker_processes 8;
# 錯誤日誌:存放路徑
error_log logs/error.log
error_log logs/error.log notice;
error_log logs/error.log info;
# pid (程序識別符號):存放路徑
pid logs/nginx.pid;
在event 作用域塊
設定 nginx 處理連線請求,在 event 模組通常會配置程序的連線數量,就是每乙個 worker 程序能併發處理的最大連線數。
在server 指令作用域塊
我們可以進行獨立專案的**配置。
events
nginx 的http 指令作用域塊
用於控制 nginx 的 http 程序。
日誌格式設定:
$remote_user:記錄客戶端的使用者名稱;
$time_local:記錄訪問時間與時區;
$request:記錄請求的 url 與 http 協議;
$status:記錄請求狀態,成功是200;
$body_bytes_sent:記錄傳送給客戶端檔案主題內容大小;
通常 web 伺服器放在反向**的後面,這樣就不能獲取到客戶端的 ip 位址,通過 $remote_addr 拿到的 ip 位址是反向**伺服器的 ip 位址。反向**伺服器在**請求的 http 頭資訊中,可以增加 x_forwarded_for 資訊,用以記錄原有客戶端的 ip 位址和原來客戶端請求的伺服器位址。
# 設定 http 伺服器,利用它的反向**功能提供負載均衡支援
}
# 配置虛擬機器
server
location /face
# 將**伺服器收到的使用者資訊傳到真實的伺服器上
# 將**伺服器收到的使用者資訊傳到真實的伺服器上
proxy_set_header host $host;
proxy_set_header x-real-ip $remote_addr;
proxy_set_header x-forwarded-for $proxy_add_x_forwarded_for;
error_page 404 502 = @fetch;
}}
location 匹配規則說明:
優先順序順序: 精確匹配 > 正則匹配 > 部分匹配 > 通用匹配
(location = ) > (location 完整路徑) > (location ^~ 路徑) > (location ~ | ~* 正則匹配) > (location 部分起始路徑) > (location /)
# location =
location = /
# location /
location /
# location 部分起始路徑
location /documents/
#location ^~ 路徑
location ^~ /images/
#location ~ 正則匹配
location ~ /documents/abc
# location ~* 正則匹配
# location ~* 正則匹配
location ~* /js/.*\.js
nginx日誌簡單認識
我們觀察 nginx 的server段,可以看到如下類似資訊 access log logs host.access.log main 這說明 該 server,它的訪問日誌的檔案是 logs host.access.log 使用的格式 main 格式.除了main格式,你可以自定義其他格式.mai...
Nginx初階 認識Nginx
nginx常見的應用場景如下圖所示 曾經的web開發並不是完全的前後端分離,最明顯的例子就是jsp,基本是前後端不分離,直到後來spring生態體系和前端框架的發展,web應用程式成了單純的提 用介面服務的程式,因此靜態資源就沒必要交給應用伺服器去處理,而是交給nginx nginx的快取加速和負載...
this簡單認識
this 在函式中簡單的說,this的指向存在於函式呼叫的時候決定的,誰呼叫了這函式 函式中的this就指向誰 例如 1 普通的呼叫函式的時候 fn window2 物件呼叫 var obj obj.f fn obj.f this obj3 定時器呼叫 因為fn不是我們自己手寫 呼叫的 底層是win...