Nginx 核心功能筆記

目錄

一、Nginx 簡介

二、核心功能詳解

三、關鍵指令解析

四、性能優化要點

五、常見應用場景



一、Nginx 簡介

  1. 定位
    • 高性能的?HTTP/反向代理服務器,同時支持郵件協議代理(IMAP/POP3/SMTP)。
    • 采用?事件驅動、異步非阻塞?架構,支持高并發(單機可處理數萬到百萬級并發連接)。
    • 內存占用低,配置文件簡潔,模塊化設計。
  2. 核心優勢
    • 輕量級:相比 Apache,資源消耗更低。
    • 高擴展性:通過模塊化設計支持動態擴展功能。
    • 熱部署:支持不停止服務更新配置、升級版本。

二、核心功能詳解

1. 靜態資源服務器(Web Server)

  • 功能:直接托管 HTML、CSS、JS、圖片等靜態文件。
  • 配置示例

server {

??? listen 80;

??? server_name example.com;

??? root /var/www/html;? # 靜態文件根目錄

??? location / {

??????? index index.html;

??? }

??? # 壓縮優化

??? gzip on;

??? gzip_types text/plain application/json text/css;

}

2. 反向代理(Reverse Proxy)

  • 功能:將客戶端請求轉發到后端服務器,隱藏真實服務端信息。
  • 典型場景:負載均衡、安全隔離、SSL 終止。
  • 配置示例

server {

??? listen 80;

??? server_name api.example.com;

??? location / {

??????? proxy_pass http://backend_servers;? # 轉發到后端服務器組

??????? proxy_set_header Host $host;

??????? proxy_set_header X-Real-IP $remote_addr;

??? }

}

3. 負載均衡(Load Balancing)

  • 支持算法
    • round-robin(默認,輪詢)
    • least_conn(最小連接數)
    • ip_hash(基于客戶端 IP 哈希分配)
    • weight(權重分配)
  • 配置示例

upstream backend_servers {

??? ip_hash;? # 會話保持

??? server 192.168.1.101:8080 weight=3;

??? server 192.168.1.102:8080;

??? server 192.168.1.103:8080 backup;? # 備用服務器

}

4. SSL/TLS 終止

  • 功能:處理 HTTPS 加密通信,減輕后端服務器壓力。
  • 配置示例

server {

??? listen 443 ssl;

??? server_name secure.example.com;

??? ssl_certificate /etc/nginx/ssl/server.crt;

??? ssl_certificate_key /etc/nginx/ssl/server.key;

??? ssl_protocols TLSv1.2 TLSv1.3;

??? location / {

??????? proxy_pass http://backend_servers;

??? }

}

5. 動靜分離

  • 功能:將動態請求(如 PHP、Java)和靜態資源(如圖片、CSS)分開處理。
  • 配置示例

server {

??? location /static/ {

??????? alias /data/static/;? # 靜態資源目錄

??????? expires 30d;????????? # 緩存控制

??? }

??? location / {

??????? proxy_pass http://app_server;? # 動態請求轉發

??? }

}

6. 虛擬主機(Virtual Host)

  • 功能:單機托管多個域名/網站。
  • 配置示例

server {

??? listen 80;

??? server_name site1.com;

??? root /var/www/site1;

}

server {

??? listen 80;

??? server_name site2.com;

??? root /var/www/site2;

}

7. 訪問控制

  • 功能:基于 IP、用戶認證限制訪問。
  • 配置示例

location /admin/ {

??? allow 192.168.1.0/24;? # 允許特定 IP 段

??? deny all;????????????? # 拒絕其他 IP

??? auth_basic "Restricted";

??? auth_basic_user_file /etc/nginx/.htpasswd;? # 用戶認證

}

8. 日志管理

  • 功能:記錄訪問日志和錯誤日志。
  • 配置示例

http {

??? log_format main '$remote_addr - $remote_user [$time_local] "$request" '

??????????????????? '$status $body_bytes_sent "$http_referer" '

??????????????????? '"$http_user_agent" "$http_x_forwarded_for"';

??? access_log /var/log/nginx/access.log main;

??? error_log /var/log/nginx/error.log warn;

}

9. 緩存加速

  • 功能:緩存后端響應,減少重復請求。
  • 配置示例

proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m;

server {

??? location / {

??????? proxy_cache my_cache;

??????? proxy_pass http://backend;

??????? proxy_cache_valid 200 302 10m;? # 緩存有效時間

??? }

}

10. 熱部署與平滑重啟

  • 熱部署

nginx -s reload? # 重新加載配置(不中斷服務)

  • 版本升級
    替換二進制文件后通過?kill -USR2 <master_pid>?實現無縫升級。

三、關鍵指令解析

  • worker_processes:設置工作進程數(通常等于 CPU 核心數)。
  • events { worker_connections 1024; }:單個工作進程的最大連接數。
  • keepalive_timeout:長連接超時時間。
  • client_max_body_size:限制客戶端請求體大小(如文件上傳)。

四、性能優化要點

  1. 啟用 Gzip 壓縮:減少傳輸數據量。
  2. 調整緩沖區:避免頻繁磁盤 I/O。
  3. 使用 HTTP/2:提升多請求并發效率。
  4. 限制并發連接:防止資源耗盡(如?limit_conn?模塊)。

五、常見應用場景

  1. Web 服務器(替代 Apache)
  2. API 網關
  3. CDN 邊緣節點
  4. 微服務入口(Kubernetes Ingress)
  5. 安全防護層(如限制 DDoS 攻擊)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/78926.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/78926.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/78926.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

強化學習(二)馬爾科夫決策過程(MDP)

1. 簡介 馬爾可夫決策過程正式地描述了強化學習的環境其中環境是完全可觀測的即當前狀態完全表征了這個過程幾乎所有的強化學習問題都可以形式化為馬爾可夫決策過程&#xff0c;例如&#xff1a; 最優控制主要處理連續的馬爾可夫決策過程部分可觀察的問題可以轉化為馬爾可夫決…

Day16(貪心算法)——LeetCode45.跳躍游戲II763.劃分字母區間

1 LeetCode45.跳躍游戲II 1.1 題目描述 與跳躍游戲類似&#xff0c;跳躍游戲II給定長為n的從0開始索引的整數數組nums&#xff0c;nums[i]是你在i處能向右跳躍的最大步數&#xff0c;求到達數組最后一個索引處需要跳躍的最少次數。 ??一個示例&#xff1a;nums[2,3,1,1,4]&a…

告別碎片化!兩大先進分塊技術如何提升RAG的語義連貫性?

研究動機 論文核心問題及研究背景分析 1. 研究領域及其重要性 研究領域&#xff1a;檢索增強生成&#xff08;Retrieval-Augmented Generation, RAG&#xff09;系統&#xff0c;結合自然語言處理&#xff08;NLP&#xff09;與信息檢索技術。重要性&#xff1a; RAG通過動態…

leetcode day37 474

474 一和零 給你一個二進制字符串數組 strs 和兩個整數 m 和 n 。 請你找出并返回 strs 的最大子集的長度&#xff0c;該子集中 最多 有 m 個 0 和 n 個 1 。 如果 x 的所有元素也是 y 的元素&#xff0c;集合 x 是集合 y 的 子集 。 示例 1&#xff1a; 輸入&#xff1a;s…

二、信息時代社會結構的轉變

到了信息時代,以及在核武器的前提下,上述的社會結構的邏輯,就有了一個根 本性的轉變,就是暴力的成本和收益,都在下降。 暴力的成本在降低。比如說槍支,它的制造和分發都變得非常容易。現在我們都 知道有 3D 打印,它就好像工業時代的印刷機,印刷圣經或者書籍,使知識更加 普及和容…

Elasticsearch 堆內存使用情況和 JVM 垃圾回收

作者&#xff1a;來自 Elastic Kofi Bartlett 探索 Elasticsearch 堆內存使用情況和 JVM 垃圾回收&#xff0c;包括最佳實踐以及在堆內存使用過高或 JVM 性能不佳時的解決方法。 堆內存大小是分配給 Elasticsearch 節點中 Java 虛擬機的 RAM 數量。 從 7.11 版本開始&#xff…

C++之類和對象:構造函數,析構函數,拷貝構造,賦值運算符重載

前提&#xff1a;如果一個類是空類&#xff0c;C中空類中真的什么都沒有嗎&#xff0c;不是的&#xff0c;編譯器會自動生成6個默認成員函數。默認成員函數&#xff1a;用戶沒有顯式實現&#xff0c;編譯器會生成的成員函數稱為默認成員函數。 默認成員函數&#xff1a;構造函…

【專題五】位運算(1):常見位運算操作總結

&#x1f4dd;前言說明&#xff1a; 本專欄主要記錄本人的基礎算法學習以及LeetCode刷題記錄&#xff0c;按專題劃分每題主要記錄&#xff1a;&#xff08;1&#xff09;本人解法 本人屎山代碼&#xff1b;&#xff08;2&#xff09;優質解法 優質代碼&#xff1b;&#xff…

小草GrassRouter多卡聚合路由器聚合衛星、MESH網絡應用解決方案

一、多網融合解決方案 衛星網絡融合? 支持接入衛星通信模塊&#xff0c;在無地面網絡覆蓋的極端場景&#xff08;如偏遠山區、海洋救援&#xff09;下&#xff0c;形成“5G衛星”雙鏈路冗余傳輸&#xff0c;衛星鏈路可作為核心通信備份&#xff0c;確保關鍵指令和視頻數據實…

【Mybatis】Mybatis基礎

文章目錄 前言一、搭建MyBatis1.1 創建maven工程1.2 加入log4j日志功能1.3 MyBatis的增刪改查1.4 核心配置文件詳解 二、MyBatis獲取參數值的兩種方式2.1 單個字面量類型的參數2.2 多個字面量類型的參數2.3 map集合類型的參數2.4 實體類類型的參數2.5 使用Param標識參數 三、 M…

AI四大邊界

大模型訓練的邊界并非由單一因素決定&#xff0c;而是技術、倫理、法律及實際應用需求共同作用的結果。以下從四個維度解析其邊界來源&#xff1a; 一、技術邊界&#xff1a;資源與能力的雙重限制 計算資源瓶頸 成本與算力&#xff1a;大模型訓練依賴海量GPU/TPU資源&#xff…

Twitter 工作原理|架構解析|社交APP邏輯

這是對Twitter 工作原理&#xff5c;架構解析&#xff5c;社交APP邏輯_嗶哩嗶哩_bilibili的學習&#xff0c;感謝up小凡生一 在兩年半前&#xff0c;埃隆馬斯克收購了Twitter&#xff0c;并且進行了一系列重大改革。今天我們來解析一下這個全球知名社交平臺的架構。首先&#x…

Java基礎學習內容大綱

Java基礎學習內容大綱 第一階段:建立編程思想 ? Java概述:如何快速學習Java技術、Java歷史、Java特點、Sublime、Java運行機制、JDK、轉義字符、Java開發規范、Java API ? 變量:數據類型、變量基本使用、數據類型轉換 ? 運算符:運算符介紹、算數運算符、關系運算符、…

如何對多維樣本進行KS檢驗

對于形狀為 ( 10000 , 1 , 304 ) (10000, 1, 304) (10000,1,304)的三維數據&#xff0c;若需使用scipy.stats.ks_2samp進行KS檢驗&#xff0c;可按以下步驟處理&#xff1a; 數據降維 KS檢驗要求輸入為一維數組&#xff0c;需將三維數據展平或按特定維度聚合&#xff1a; ? 方…

在 VMware 虛擬機中安裝 Windows7

文章目錄 前言1.安裝VMware 虛擬機1. VMware虛擬機軟件安裝2. 虛擬機創建配置&#xff08;超詳細步驟&#xff09;3. Windows7系統安裝 3、安裝 VMware tools4. VMware Tools安裝與優化5. 總結與常見問題 前言 最近有不少朋友在問如何在電腦上同時使用多個操作系統&#xff0c…

直播預告|TinyVue 組件庫高級用法:定制你的企業級UI體系

TinyVue 是一個跨端跨框架的企業級 UI 組件庫&#xff0c;基于 renderless 無渲染組件設計架構&#xff0c;實現了一套代碼同時支持 Vue2 和 Vue3&#xff0c;支持 PC 和移動端&#xff0c;包含 100 多個功能豐富的精美組件&#xff0c;可幫助開發者高效開發 Web 應用。 4 月 …

分治而不割裂—分治協同式敏捷工作模式

分治而不割裂&#xff1a;解密敏捷協同工作模式如何驅動大企業持續領跑 在數字化浪潮中&#xff0c;亞馬遜僅用11天完成Prime Day全球技術架構升級&#xff0c;華為5G基站項目組創造過單周迭代47個功能模塊的紀錄&#xff0c;這些商業奇跡的背后&#xff0c;都隱藏著一個共性秘…

Python列表全面解析:從基礎到高階操作

一、為什么需要列表&#xff1f; 在Python中&#xff0c;列表是可變有序序列&#xff0c;用于存儲多個元素的容器。相較于單一變量存儲獨立值&#xff0c;列表能更高效地管理批量數據&#xff0c;其特點包括&#xff1a; ?引用存儲&#xff1a;列表元素存儲的是對象的引用?…

Spring知識點梳理

一、Spring&#xff08;Spring Framework&#xff09; 1、IOC&#xff08;控制反轉&#xff09; 1&#xff09;什么是IOC控制反轉&#xff1f; 為了解藕&#xff0c;有反轉就有“正轉”&#xff0c;“正轉”就是程序員手動 new對象&#xff1b;“反轉”就是將對象的創建、對…

SpringBoot啟動后自動執行方法的各種方式-筆記

1. SpringBoot啟動后自動執行方法的各種方式 1.1 PostConstruct 注解 作用&#xff1a;在依賴注入完成后執行初始化方法。 適用場景&#xff1a;需要在Bean初始化時執行某些操作&#xff08;如配置、預加載數據&#xff09;。 注意&#xff1a;該方法在Bean初始化階段執行&…