Nginx R31 doc-02-nginx 基本功能

老马啸西风發表於2024-05-19

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/

相關文章