nginx 系列 Nginx-01-聊一聊 nginx Nginx-01-Nginx 是什麼 Nginx-02-為什麼使用 Nginx Nginx-02-Nginx Ubuntu 安裝 + windows10 + WSL ubuntu 安裝 nginx 實戰筆記 Nginx-02-基本使用 Ngin ...
nginx 系列
Nginx-02-Nginx Ubuntu 安裝 + windows10 + WSL ubuntu 安裝 nginx 實戰筆記
Nginx-05-nginx 反向代理是什麼?windows 下如何配置使用 nginx
Nginx R31 doc 官方文檔-01-nginx 如何安裝
Nginx R31 doc-03-HTTP Load Balancing HTTP 負載均衡
Nginx R31 doc-04-HTTP Health Checks
Nginx R31 doc-06-Accepting the PROXY Protocol
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-18-High Availability Support for NGINX Plus in On-Premises Deployments
Nginx 實戰-01-nginx windows 安裝筆記
Nginx 實戰-02-nginx proxy_pass 服務代理訪問 使用筆記 ubuntu nodejs
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/