nginx 系列
Nginx-01-聊一聊 nginx
Nginx-01-Nginx 是什麼
Nginx-02-為什麼使用 Nginx
Nginx-02-Nginx Ubuntu 安裝 + windows10 + WSL ubuntu 安裝 nginx 實戰筆記
Nginx-02-基本使用
Nginx-03-Nginx 專案架構
Nginx-04-Docker Nginx
Nginx-05-nginx 反向代理是什麼?windows 下如何配置使用 nginx
Nginx-06-nginx 彙總入門介紹
Nginx R31 doc 官方文件-01-nginx 如何安裝
Nginx R31 doc-02-nginx 基本功能
Nginx R31 doc-03-HTTP Load Balancing HTTP 負載均衡
Nginx R31 doc-04-HTTP Health Checks
Nginx R31 doc-05-Dynamic Configuration of Upstreams with the NGINX Plus API 使用 NGINX Plus API 動態配置上游伺服器
Nginx R31 doc-06-Accepting the PROXY Protocol
Nginx R31 doc-07-內容快取
Nginx R31 doc-08-Configuring NGINX and NGINX Plus as a Web Server 配置 NGINX 和 NGINX Plus 作為 Web 伺服器
Nginx R31 doc-09-Serving Static Content 靜態內容
Nginx R31 doc-10-NGINX Reverse Proxy 反向代理
Nginx R31 doc-11-Compression and Decompression 壓縮與解壓縮
Nginx R31 doc-12-NGINX SSL Termination 安全加密
Nginx R31 doc-13-Limiting Access to Proxied HTTP Resources 訪問限流
Nginx R31 doc-14-Dynamic Denylisting of IP Addresses 動態拒絕IP地址
Nginx R31 doc-15-Live Activity Monitoring 實時活動監控
Nginx R31 doc-16-logging 配置日誌
Nginx R31 doc-17-debugging 除錯
Nginx R31 doc-18-High Availability Support for NGINX Plus in On-Premises Deployments
Nginx 實戰-01-nginx ubuntu 安裝筆記
Nginx 實戰-01-nginx windows 安裝筆記
Nginx 實戰-02-nginx proxy_pass 服務代理訪問 使用筆記 ubuntu nodejs
Nginx 實戰-03-nginx 負載均衡
Nginx 實戰-04-nginx 不同的地址訪問不同的服務
Nginx 實戰-05-nginx 反向代理實現域名到指定的 ip
在執行時控制 NGINX 程序
瞭解處理流量的 NGINX 程序,並學會在執行時對它們進行控制。
主程序和工作程序
NGINX 有一個主程序和一個或多個工作程序。如果啟用了快取,快取載入器和快取管理器程序也會在啟動時執行。
主程序的主要目的是讀取和評估配置檔案,並維護工作程序。
工作程序執行請求的實際處理。NGINX 依賴於作業系統相關的機制來有效地將請求分配給工作程序。
工作程序的數量由 nginx.conf 配置檔案中的 worker_processes 指令定義,並且可以設定為固定數量,也可以配置為根據可用的 CPU 核心數量自動調整。
控制 NGINX
要重新載入配置,可以停止或重新啟動 NGINX,或向主程序傳送訊號。
可以透過執行帶有 -s 引數的 nginx 命令(呼叫 NGINX 可執行檔案)來傳送訊號。
使用 NGINX 控制訊號
使用 nginx -s <SIGNAL>
命令,其中 <SIGNAL>
可以是以下之一:
quit
– 優雅地關閉(SIGQUIT 訊號)reload
– 重新載入配置檔案(SIGHUP 訊號)reopen
– 重新開啟日誌檔案(SIGUSR1 訊號)stop
– 立即關閉(或快速關閉,SIGTERM 訊號)
也可以使用 kill 實用程式直接向主程序傳送訊號。主程序的程序 ID 預設寫入到 nginx.pid 檔案中,該檔案位於 /usr/local/nginx/logs 或 /var/run 目錄中。
要了解更多關於高階訊號的資訊(例如執行實時二進位制升級),請參閱 nginx.org 上的《控制 NGINX》。
建立 NGINX Plus 和 NGINX 配置檔案
瞭解 NGINX 或 NGINX Plus 配置檔案中的基本元素,包括指令和上下文。
NGINX 和 NGINX Plus 與其他服務類似,它們使用以特定格式編寫的基於文字的配置檔案。
預設情況下,該檔名為 nginx.conf,對於 NGINX Plus 放置在 /etc/nginx 目錄下。
(對於 NGINX Open Source,檔案位置取決於用於安裝 NGINX 的軟體包系統和作業系統。
通常位於 /usr/local/nginx/conf、/etc/nginx 或 /usr/local/etc/nginx 其中之一。)
指令
配置檔案由指令及其引數組成。簡單(單行)指令以分號結尾。
其他指令充當“容器”,將相關指令分組在一起,用大括號({})括起來;這些通常被稱為塊。以下是一些簡單指令的示例。
user nobody;
error_log logs/error.log notice;
worker_processes 1;
特定功能配置檔案
為了更容易維護配置,我們建議將其拆分為一組特定功能的檔案,儲存在 /etc/nginx/conf.d 目錄中,並在主 nginx.conf 檔案中使用 include 指令來引用特定功能檔案的內容。
include conf.d/http;
include conf.d/stream;
include conf.d/exchange-enhanced;
上下文
幾個頂級指令,稱為上下文,將適用於不同流量型別的指令分組在一起:
events
– 通用連線處理http
– HTTP 流量mail
– 郵件流量stream
– TCP 和 UDP 流量
放置在這些上下文之外的指令被認為在主上下文中。
虛擬伺服器
在每個流量處理上下文中,您可以包含一個或多個 server 塊來定義控制請求處理的虛擬伺服器。您可以在 server 上下文中包含的指令取決於流量型別。
對於 HTTP 流量(http 上下文),每個 server 指令控制特定域名或 IP 地址上資源的請求處理。在 server 上下文中的一個或多個 location 上下文定義瞭如何處理特定的 URI 集。
對於郵件和 TCP/UDP 流量(mail 和 stream 上下文),每個 server 指令控制到達特定 TCP 埠或 UNIX 套接字的流量的處理。
具有多個上下文的示例配置檔案
以下配置說明了上下文的使用。
user nobody; # a directive in the 'main' context
events {
# configuration of connection processing
}
http {
# Configuration specific to HTTP and affecting all virtual servers
server {
# configuration of HTTP virtual server 1
location /one {
# configuration for processing URIs starting with '/one'
}
location /two {
# configuration for processing URIs starting with '/two'
}
}
server {
# configuration of HTTP virtual server 2
}
}
stream {
# Configuration specific to TCP/UDP and affecting all virtual servers
server {
# configuration of TCP virtual server 1
}
}
繼承 Inheritance
通常情況下,子上下文(包含在另一個上下文中的上下文,即其父上下文)會繼承在父級水平包含的指令的設定。一些指令可以出現在多個上下文中,在這種情況下,您可以透過在子上下文中包含該指令來覆蓋從父級繼承的設定。例如,請參閱 proxy_set_header 指令。
重新載入配置 Reloading Configuration
要使配置檔案的更改生效,必須重新載入。
您可以重新啟動 nginx 程序,也可以傳送重新載入訊號以升級配置,而不中斷當前請求的處理。有關詳細資訊,請參閱在執行時控制 NGINX 程序。
使用 NGINX Plus,您可以在不重新載入配置的情況下動態重新配置對上游組中伺服器的負載平衡。
您還可以使用 NGINX Plus API 和鍵值儲存來動態控制訪問,例如基於客戶端 IP 地址。
參考資料
https://docs.nginx.com/nginx/admin-guide/basic-functionality/runtime-control/