[{"data":1,"prerenderedAt":859},["ShallowReactive",2],{"navigation_docs":3,"-web-dev-infrastructure-nginx-intro":352,"-web-dev-infrastructure-nginx-intro-surround":854},[4,54,83,116,125,161,179,200],{"title":5,"path":6,"stem":7,"children":8},"Ai","/ai","ai",[9,12,42,46,50],{"title":10,"path":6,"stem":11},"AI 技術探索","ai/index",{"title":13,"path":14,"stem":15,"children":16,"page":41},"Rag","/ai/rag","ai/RAG",[17,21,25,29,33,37],{"title":18,"path":19,"stem":20},"BM25 演算法深入解析：從 TF-IDF 到現代搜尋引擎的核心技術","/ai/rag/bm25-deep-dive-from-tf-idf-to-rag","ai/RAG/bm25-deep-dive-from-tf-idf-to-rag",{"title":22,"path":23,"stem":24},"Dense Retrieval（向量檢索）深入解析","/ai/rag/dense-retrieval-deep-dive","ai/RAG/dense-retrieval-deep-dive",{"title":26,"path":27,"stem":28},"RAG（Retrieval-Augmented Generation）原理與實作入門","/ai/rag/rag-intro-principles-and-implementation","ai/RAG/rag-intro-principles-and-implementation",{"title":30,"path":31,"stem":32},"RAG Retrieval Strategy 深入解析","/ai/rag/rag-retrieval-strategy-deep-dive","ai/RAG/rag-retrieval-strategy-deep-dive",{"title":34,"path":35,"stem":36},"Reciprocal Rank Fusion（RRF）教學：打造更穩定的檢索融合策略","/ai/rag/rrf-reciprocal-rank-fusion-guide","ai/RAG/rrf-reciprocal-rank-fusion-guide",{"title":38,"path":39,"stem":40},"TF-IDF（Term Frequency–Inverse Document Frequency）深入解析","/ai/rag/tf-idf-deep-dive","ai/RAG/tf-idf-deep-dive",false,{"title":43,"path":44,"stem":45},"Docus AI 功能完整實作指南","/ai/docus-ai-implementation","ai/docus-ai-implementation",{"title":47,"path":48,"stem":49},"llms.txt 是什麼？在 Nuxt 中控制 AI 與搜尋引擎爬蟲的新方式","/ai/llms-txt","ai/llms-txt",{"title":51,"path":52,"stem":53},"MCP（Model Context Protocol）是什麼？用「AI 的 USB-C」理解模型如何安全連接工具與資料","/ai/mcp_concept","ai/mcp_concept",{"title":55,"path":56,"stem":57,"children":58,"page":41},"Data Analysis","/data-analysis","data-analysis",[59,63,67,71,75,79],{"title":60,"path":61,"stem":62},"Exploratory Data Analysis（EDA）資料探索分析入門","/data-analysis/exploratory-data-analysis-eda","data-analysis/exploratory-data-analysis-eda",{"title":64,"path":65,"stem":66},"PR-AUC 深入解析：不平衡分類問題的重要評估指標","/data-analysis/pr-auc-for-imbalanced-classification","data-analysis/pr-auc-for-imbalanced-classification",{"title":68,"path":69,"stem":70},"ROC-AUC 深入解析：理解分類模型的判斷能力","/data-analysis/roc-auc-complete-guide","data-analysis/roc-auc-complete-guide",{"title":72,"path":73,"stem":74},"SHAP（SHapley Additive exPlanations）模型解釋方法深入解析","/data-analysis/shap-model-interpretation-complete-guide","data-analysis/shap-model-interpretation-complete-guide",{"title":76,"path":77,"stem":78},"Social Network Analysis（SNA）深入解析","/data-analysis/social-network-analysis-sna","data-analysis/social-network-analysis-sna",{"title":80,"path":81,"stem":82},"Time-based Split：為什麼時間序列資料不能使用 Random Split？","/data-analysis/time-based-split-vs-random-split","data-analysis/time-based-split-vs-random-split",{"title":84,"path":85,"stem":86,"children":87,"page":41},"MachineLearning","/machine_learning","machine_learning",[88,92,96,100,104,108,112],{"title":89,"path":90,"stem":91},"Confusion Matrix（混淆矩陣）完整解析","/machine_learning/confusion-matrix","machine_learning/confusion-matrix",{"title":93,"path":94,"stem":95},"Decision Tree 模型完整教學：從原理到 Python 實作","/machine_learning/decision-tree-complete-guide","machine_learning/decision-tree-complete-guide",{"title":97,"path":98,"stem":99},"為什麼 Decision Tree 在 Tabular Data 上常常勝過 Deep Learning？","/machine_learning/decision-tree-vs-deep-learning-on-tabular-data","machine_learning/decision-tree-vs-deep-learning-on-tabular-data",{"title":101,"path":102,"stem":103},"LightGBM 模型入門：理解高效能的 Gradient Boosting 演算法","/machine_learning/lightgbm-intro-for-tabular-data","machine_learning/lightgbm-intro-for-tabular-data",{"title":105,"path":106,"stem":107},"Logistic Regression（Logit 回歸）完整教學","/machine_learning/logistic-regression-complete-guide","machine_learning/logistic-regression-complete-guide",{"title":109,"path":110,"stem":111},"為什麼模型訓練需要 Train / Validation / Test Dataset？","/machine_learning/train-validation-test-dataset","machine_learning/train-validation-test-dataset",{"title":113,"path":114,"stem":115},"XGBoost 原理與實務教學","/machine_learning/xgboost-complete-guide","machine_learning/xgboost-complete-guide",{"title":117,"path":118,"stem":119,"children":120,"page":41},"Network","/network","network",[121],{"title":122,"path":123,"stem":124},"DNS 設定入門：CNAME vs A Record 完整解析","/network/dns-cname-vs-a-record-guide","network/dns-cname-vs-a-record-guide",{"title":126,"path":127,"stem":128,"children":129},"Nuxt","/nuxt","nuxt",[130,133,137,141,145,149,153,157],{"title":131,"path":127,"stem":132},"Nuxt 實戰指南","nuxt/index",{"title":134,"path":135,"stem":136},"Abstraction Layer 與 Adapter 的差別，一次搞懂設計角色","/nuxt/adapter_abstraction_layer","nuxt/adapter_abstraction_layer",{"title":138,"path":139,"stem":140},"Nuxt 4 全面理解 — 專案檔案結構解析","/nuxt/directory_structure","nuxt/directory_structure",{"title":142,"path":143,"stem":144},"Nuxt 前端 build 流程完整解析","/nuxt/frontend_build","nuxt/frontend_build",{"title":146,"path":147,"stem":148},"Nitro 是什麼？從 Nuxt 專案到 Server 與 Edge 的關鍵引擎","/nuxt/nitro","nuxt/nitro",{"title":150,"path":151,"stem":152},"深入理解 Nuxt 的 .nuxt 與 .output：為什麼部署時一定要分清楚？","/nuxt/nuxt_and_output","nuxt/nuxt_and_output",{"title":154,"path":155,"stem":156},"Nuxt 中 dev、build、preview 的差異一次搞懂","/nuxt/nuxt_dev_build_preview","nuxt/nuxt_dev_build_preview",{"title":158,"path":159,"stem":160},"Nuxt Image vs \u003Cimg>：為什麼 Nuxt 3 專案幾乎都該用 \u003CNuxtImg>？","/nuxt/nuxt_image","nuxt/nuxt_image",{"title":162,"path":163,"stem":164,"children":165},"Python 程式開發","/python","python/index",[166,167,171,175],{"title":162,"path":163,"stem":164},{"title":168,"path":169,"stem":170},"如何在 FastAPI 中調用記憶體 Buffer 回傳圖片 (附實例)","/python/memory_buffer","python/memory_buffer",{"title":172,"path":173,"stem":174},"Python 單元測試教學：如何為你的程式撰寫 Test","/python/python-unit-testing-unittest-pytest","python/python-unit-testing-unittest-pytest",{"title":176,"path":177,"stem":178},"如何使用 uv 取代 pip：改善 Python 專案的開發流程","/python/uv","python/uv",{"title":180,"path":181,"stem":182,"children":183,"page":41},"Statistic","/statistic","statistic",[184,188,192,196],{"title":185,"path":186,"stem":187},"卡方檢定（Chi-Square Test）入門教學","/statistic/chi-square-test-intro","statistic/chi-square-test-intro",{"title":189,"path":190,"stem":191},"常見抽樣方法（Sampling Methods）教學：Stratified、Quota、Convenience、Systematic、Simple Random","/statistic/common-sampling-methods-guide","statistic/common-sampling-methods-guide",{"title":193,"path":194,"stem":195},"Cramér’s V 指標介紹：如何衡量兩個類別變數之間的關聯","/statistic/cramers-v-for-categorical-association","statistic/cramers-v-for-categorical-association",{"title":197,"path":198,"stem":199},"Mann–Whitney U 與 Kolmogorov–Smirnov（KS）檢定：非參數統計檢定的入門指南","/statistic/mann-whitney-u-and-ks-test-intro","statistic/mann-whitney-u-and-ks-test-intro",{"title":201,"path":202,"stem":203,"children":204},"WebDev","/web_dev","web_dev",[205,208,234,248,282,312,334],{"title":206,"path":202,"stem":207},"Web 前端開發","web_dev/index",{"title":209,"path":210,"stem":211,"children":212},"瀏覽器與渲染","/web_dev/browser","web_dev/browser/index",[213,214,218,222,226,230],{"title":209,"path":210,"stem":211},{"title":215,"path":216,"stem":217},"瀏覽器儲存空間完整解析：Cookie、localStorage、IndexedDB 到 Cache Storage","/web_dev/browser/browser-storage-comprehensive-guide","web_dev/browser/browser-storage-comprehensive-guide",{"title":219,"path":220,"stem":221},"DOM (Document Object Model) 深入解析","/web_dev/browser/dom","web_dev/browser/dom",{"title":223,"path":224,"stem":225},"Service Worker Request Flow 深入解析","/web_dev/browser/service-worker-request-flow","web_dev/browser/service-worker-request-flow",{"title":227,"path":228,"stem":229},"CSR、SSR 與 SSG 是什麼？前端渲染策略完整比較","/web_dev/browser/ssr_csr_ssg","web_dev/browser/ssr_csr_ssg",{"title":231,"path":232,"stem":233},"Virtual DOM 深入解析：為什麼它能優化前端效能？","/web_dev/browser/virtual_dom","web_dev/browser/virtual_dom",{"title":235,"path":236,"stem":237,"children":238},"圖形技術","/web_dev/graphics","web_dev/graphics/index",[239,240,244],{"title":235,"path":236,"stem":237},{"title":241,"path":242,"stem":243},"為什麼 Three.js 專案幾乎都選擇 CSR？從 SSR 問題談起","/web_dev/graphics/threejs_csr","web_dev/graphics/threejs_csr",{"title":245,"path":246,"stem":247},"WebGL 是什麼？為什麼前端 3D 幾乎都靠它？","/web_dev/graphics/webgl","web_dev/graphics/webGL",{"title":249,"path":250,"stem":251,"children":252},"架構與配置","/web_dev/infrastructure","web_dev/infrastructure/index",[253,254,258,262,266,270,274,278],{"title":249,"path":250,"stem":251},{"title":255,"path":256,"stem":257},"Zeabur + K3s + Nuxt 部署架構完整解析","/web_dev/infrastructure/k3s-zeabur","web_dev/infrastructure/K3s-zeabur",{"title":259,"path":260,"stem":261},"ECS vs Docker vs Kubernetes：從部署堆疊理解三層架構","/web_dev/infrastructure/ecs-docker-kubernetes-stack","web_dev/infrastructure/ecs-docker-kubernetes-stack",{"title":263,"path":264,"stem":265},"ECS vs VPS 是什麼？從部署網站的角度一次搞懂差別","/web_dev/infrastructure/ecs-vs-vps","web_dev/infrastructure/ecs-vs-vps",{"title":267,"path":268,"stem":269},"Zeabur 內網服務連線完整入門指南","/web_dev/infrastructure/k3s-internal-networking","web_dev/infrastructure/k3s-internal-networking",{"title":271,"path":272,"stem":273},"使用 Microservices 架構設計系統的優勢解析","/web_dev/infrastructure/microservices-architecture-advantages","web_dev/infrastructure/microservices-architecture-advantages",{"title":275,"path":276,"stem":277},"Nginx 入門教學：從反向代理到與 Kubernetes 的架構比較","/web_dev/infrastructure/nginx-intro","web_dev/infrastructure/nginx-intro",{"title":279,"path":280,"stem":281},"YAML 配置是什麼？為什麼現代開發都在用它","/web_dev/infrastructure/yaml-configuration","web_dev/infrastructure/yaml-configuration",{"title":283,"path":284,"stem":285,"children":286},"網絡與通訊","/web_dev/network","web_dev/network/index",[287,288,292,296,300,304,308],{"title":283,"path":284,"stem":285},{"title":289,"path":290,"stem":291},"HTTP Request 結構完整解析：從 Request Line 到 Header 一次看懂","/web_dev/network/http-request-structure","web_dev/network/http-request-structure",{"title":293,"path":294,"stem":295},"OSI 模型（Open Systems Interconnection Model）完整解析","/web_dev/network/osi-model","web_dev/network/osi-model",{"title":297,"path":298,"stem":299},"RESTful API 設計原則與實務解析","/web_dev/network/restful-api","web_dev/network/restful-api",{"title":301,"path":302,"stem":303},"RESTful API 五大設計原則深入解析","/web_dev/network/restful-api-principles","web_dev/network/restful-api-principles",{"title":305,"path":306,"stem":307},"Server-Sent Events (SSE) 深入解析與實作教學","/web_dev/network/sse-introduction","web_dev/network/sse-introduction",{"title":309,"path":310,"stem":311},"WebSocket 入門教學：從概念到 Node.js 實作","/web_dev/network/websocket-introduction","web_dev/network/websocket-introduction",{"title":313,"path":314,"stem":315,"children":316},"認證與安全","/web_dev/security","web_dev/security/index",[317,318,322,326,330],{"title":313,"path":314,"stem":315},{"title":319,"path":320,"stem":321},"使用 Cookie 與 Session 建立使用者驗證（完整新手教學）","/web_dev/security/cookie-session-authentication","web_dev/security/cookie-session-authentication",{"title":323,"path":324,"stem":325},"JWT 驗證機制完整解析：從登入流程到實務應用","/web_dev/security/jwt-authentication","web_dev/security/jwt-authentication",{"title":327,"path":328,"stem":329},"Secret Key 簽名是什麼？從零理解資料簽名的本質","/web_dev/security/secret-key-signing","web_dev/security/secret-key-signing",{"title":331,"path":332,"stem":333},"SSH（Secure Shell）是什麼？從遠端登入到安全通道的核心概念","/web_dev/security/ssh","web_dev/security/ssh",{"title":335,"path":336,"stem":337,"children":338},"SEO 與規範","/web_dev/seo","web_dev/seo/index",[339,340,344,348],{"title":335,"path":336,"stem":337},{"title":341,"path":342,"stem":343},"Canonical URL 是什麼？用生活化方式搞懂前端 SEO 的基本保命符","/web_dev/seo/canonical_link","web_dev/seo/canonical_link",{"title":345,"path":346,"stem":347},"robots.txt 是什麼？SEO 的第一道守門員","/web_dev/seo/robot_txt","web_dev/seo/robot_txt",{"title":349,"path":350,"stem":351},"Nuxt SEO 中的 Meta 與 SEO 工具是如何運作的？","/web_dev/seo/seo","web_dev/seo/seo",{"id":353,"title":275,"body":354,"description":839,"extension":840,"links":841,"meta":842,"navigation":851,"path":276,"seo":852,"stem":277,"__hash__":853},"docs/web_dev/infrastructure/nginx-intro.md",{"type":355,"value":356,"toc":818},"minimark",[357,361,366,370,373,381,384,388,391,394,405,408,411,433,435,439,444,447,450,456,459,471,474,476,480,483,486,492,495,515,518,520,524,527,533,536,547,550,552,556,559,562,576,579,581,585,588,591,604,606,610,613,619,621,625,687,700,702,706,709,720,723,734,736,740,743,749,752,754,757,760,772,775,777,781,784,787,801,803,806,809,815],[358,359,275],"h1",{"id":360},"nginx-入門教學從反向代理到與-kubernetes-的架構比較",[362,363,365],"h2",{"id":364},"為什麼幾乎所有後端工程師都會用-nginx","為什麼幾乎所有後端工程師都會用 Nginx？",[367,368,369],"p",{},"當你開始接觸 Web 開發或系統架構時，很快就會遇到 Nginx 這個名字。無論是部署網站、建 API，甚至是進入雲端與容器化世界，Nginx 幾乎都是最常見的基礎元件之一。",[367,371,372],{},"但很多新手一開始會有一個疑問：\n「我已經有後端服務了，為什麼還需要 Nginx？」",[367,374,375,376,380],{},"關鍵在於：",[377,378,379],"strong",{},"後端程式負責業務邏輯，而 Nginx 負責流量與請求的“入口管理”","。它讓整個系統變得更穩定、更高效，也更容易擴展。",[382,383],"hr",{},[362,385,387],{"id":386},"nginx-是什麼直覺理解","Nginx 是什麼？（直覺理解）",[367,389,390],{},"Nginx 本質上是一個「高效能 Web Server + 反向代理伺服器」。",[367,392,393],{},"你可以把它想像成一個站在門口的接待員：",[395,396,402],"pre",{"className":397,"code":399,"language":400,"meta":401},[398],"language-text","Client → Nginx → Backend Server\n","text","",[403,404,399],"code",{"__ignoreMap":401},[367,406,407],{},"使用者的請求不會直接打到你的應用程式，而是先經過 Nginx，再由它決定要怎麼處理這個請求。",[367,409,410],{},"這個設計帶來三個關鍵好處：",[412,413,414,421,427],"ol",{},[415,416,417,420],"li",{},[377,418,419],{},"隱藏後端服務","（安全性提升）",[415,422,423,426],{},[377,424,425],{},"分散流量","（提升效能）",[415,428,429,432],{},[377,430,431],{},"統一入口","（方便管理）",[382,434],{},[362,436,438],{"id":437},"nginx-的三大核心功能","Nginx 的三大核心功能",[440,441,443],"h3",{"id":442},"一反向代理reverse-proxy","一、反向代理（Reverse Proxy）",[367,445,446],{},"反向代理是 Nginx 最核心的功能。",[367,448,449],{},"當使用者發送請求時，Nginx 會幫你把請求「轉發」到真正的後端服務，例如 FastAPI 或 Node.js。",[395,451,454],{"className":452,"code":453,"language":400,"meta":401},[398],"Client → Nginx → API Server\n",[403,455,453],{"__ignoreMap":401},[367,457,458],{},"這樣做的好處是：",[460,461,462,465,468],"ul",{},[415,463,464],{},"使用者永遠只看到 Nginx（隱藏後端）",[415,466,467],{},"可以同時接多個後端服務（微服務架構）",[415,469,470],{},"可以統一處理 HTTPS、Header、驗證等邏輯",[367,472,473],{},"這也是為什麼你在雲端部署時，幾乎一定會看到 Nginx。",[382,475],{},[440,477,479],{"id":478},"二負載平衡load-balancing","二、負載平衡（Load Balancing）",[367,481,482],{},"當你的服務流量變大，一台伺服器撐不住時，就需要「分流」。",[367,484,485],{},"Nginx 可以幫你把流量平均分配到多個後端：",[395,487,490],{"className":488,"code":489,"language":400,"meta":401},[398],"        → Server A\nClient → Nginx → Server B\n        → Server C\n",[403,491,489],{"__ignoreMap":401},[367,493,494],{},"常見的分配策略包括：",[460,496,497,503,509],{},[415,498,499,502],{},[377,500,501],{},"Round Robin","（輪流分配）",[415,504,505,508],{},[377,506,507],{},"Least Connections","（最少連線優先）",[415,510,511,514],{},[377,512,513],{},"IP Hash","（同一使用者導到同一台）",[367,516,517],{},"這讓你的系統可以透過「水平擴展（Scale out）」來提升效能，而不是只靠升級單一機器。",[382,519],{},[440,521,523],{"id":522},"三靜態資源伺服static-file-serving","三、靜態資源伺服（Static File Serving）",[367,525,526],{},"Nginx 在處理靜態資源（HTML / CSS / JS / 圖片）時非常高效。",[395,528,531],{"className":529,"code":530,"language":400,"meta":401},[398],"Client → Nginx → 回傳靜態檔案\n",[403,532,530],{"__ignoreMap":401},[367,534,535],{},"這代表：",[460,537,538,541,544],{},[415,539,540],{},"不需要經過後端程式",[415,542,543],{},"回應速度更快",[415,545,546],{},"減少後端負擔",[367,548,549],{},"在像 Nuxt.js 或 Next.js 這類前端框架中，Nginx 常被用來 serving build 後的靜態頁面。",[382,551],{},[362,553,555],{"id":554},"nginx-背後的關鍵事件驅動event-driven","Nginx 背後的關鍵：事件驅動（Event-driven）",[367,557,558],{},"Nginx 高效的原因，在於它採用「事件驅動 + 非同步（async）」架構。",[367,560,561],{},"這與傳統的「一個 request 對應一個 thread」不同：",[460,563,564,570],{},[415,565,566,569],{},[377,567,568],{},"傳統模型","：Thread-based（容易爆記憶體）",[415,571,572,575],{},[377,573,574],{},"Nginx","：Event loop（可同時處理大量連線）",[367,577,578],{},"這個設計也和 Uvicorn 或 Node.js 類似，都是現代高併發系統的重要基礎。",[382,580],{},[362,582,584],{"id":583},"那-kubernetes-在做什麼很多人會混淆","那 Kubernetes 在做什麼？（很多人會混淆）",[367,586,587],{},"當你學到 Kubernetes（K8s）時，很容易產生一個誤解：",[367,589,590],{},"「既然有 K8s，我還需要 Nginx 嗎？」",[592,593,594],"blockquote",{},[367,595,596,600,601],{},[597,598,599],"span",{},"!IMPORTANT","\n答案是：",[377,602,603],{},"需要，而且兩者完全不是同一層的東西。",[382,605],{},[362,607,609],{"id":608},"nginx-vs-kubernetes本質差異","Nginx vs Kubernetes：本質差異",[367,611,612],{},"我們用一個簡單的分層來看：",[395,614,617],{"className":615,"code":616,"language":400,"meta":401},[398],"[使用者流量層] → Nginx\n[應用部署層] → Kubernetes\n",[403,618,616],{"__ignoreMap":401},[382,620],{},[440,622,624],{"id":623},"一角色定位不同","一、角色定位不同",[626,627,628,644],"table",{},[629,630,631],"thead",{},[632,633,634,639,641],"tr",{},[635,636,638],"th",{"align":637},"left","項目",[635,640,574],{"align":637},[635,642,643],{"align":637},"Kubernetes",[645,646,647,661,674],"tbody",{},[632,648,649,655,658],{},[650,651,652],"td",{"align":637},[377,653,654],{},"角色",[650,656,657],{"align":637},"流量處理工具",[650,659,660],{"align":637},"容器管理平台",[632,662,663,668,671],{},[650,664,665],{"align":637},[377,666,667],{},"功能",[650,669,670],{"align":637},"反向代理、負載平衡",[650,672,673],{"align":637},"部署、擴展、調度",[632,675,676,681,684],{},[650,677,678],{"align":637},[377,679,680],{},"關注點",[650,682,683],{"align":637},"Request",[650,685,686],{"align":637},"Container / Pod",[460,688,689,694],{},[415,690,691,693],{},[377,692,574],{}," 在處理「請求怎麼進來」",[415,695,696,699],{},[377,697,698],{},"K8s"," 在處理「服務怎麼運行」",[382,701],{},[440,703,705],{"id":704},"二解決問題的層級不同","二、解決問題的層級不同",[367,707,708],{},"Nginx 解決的是：",[460,710,711,714,717],{},[415,712,713],{},"請求怎麼轉發？",[415,715,716],{},"流量怎麼分配？",[415,718,719],{},"如何處理 HTTPS？",[367,721,722],{},"Kubernetes 解決的是：",[460,724,725,728,731],{},[415,726,727],{},"容器壞了怎麼重啟？",[415,729,730],{},"流量變大怎麼自動擴容？",[415,732,733],{},"服務怎麼部署到多台機器？",[382,735],{},[440,737,739],{"id":738},"三實際架構會怎麼搭","三、實際架構會怎麼搭？",[367,741,742],{},"在真實系統中，兩者通常是「一起用」的：",[395,744,747],{"className":745,"code":746,"language":400,"meta":401},[398],"Client\n  ↓\nNginx (或 Ingress Controller)\n  ↓\nKubernetes Cluster\n  ↓\nPods (你的應用程式)\n",[403,748,746],{"__ignoreMap":401},[367,750,751],{},"在 K8s 裡，甚至會有像 NGINX Ingress Controller 這樣的元件，直接把 Nginx 當成流量入口。",[382,753],{},[362,755,756],{"id":756},"一個直覺比喻幫你記住",[367,758,759],{},"你可以這樣理解：",[460,761,762,767],{},[415,763,764],{},[377,765,766],{},"Nginx = 櫃檯 / 門口接待",[415,768,769],{},[377,770,771],{},"Kubernetes = 整棟大樓的管理系統",[367,773,774],{},"Nginx 負責接客人、分流；K8s 負責安排房間、維修設備、擴建樓層。兩者缺一不可，但完全不衝突。",[382,776],{},[362,778,780],{"id":779},"為什麼學會-nginx-對你很重要","為什麼學會 Nginx 對你很重要？",[367,782,783],{},"即使你主要用的是雲端（AWS / GCP）或平台（Vercel / Zeabur），背後仍然大量使用 Nginx 或類似技術。",[367,785,786],{},"理解 Nginx 會幫助你：",[460,788,789,792,795,798],{},[415,790,791],{},"更清楚 request flow（面試超常問）",[415,793,794],{},"理解 reverse proxy / load balancing 原理",[415,796,797],{},"看懂 K8s Ingress / API Gateway 架構",[415,799,800],{},"排查部署問題（例如 502 / timeout）",[382,802],{},[362,804,805],{"id":805},"結論",[367,807,808],{},"Nginx 是現代 Web 架構中最重要的「流量入口工具」，負責處理反向代理、負載平衡與靜態資源服務。而 Kubernetes 則是管理應用部署與運行的核心平台。",[367,810,811,812],{},"兩者的關係不是取代，而是互補：\n",[377,813,814],{},"Nginx 管入口，K8s 管內部。",[367,816,817],{},"當你把這個分層理解清楚之後，整個 Web 架構會變得非常清晰，也更容易進入雲原生與微服務世界。",{"title":401,"searchDepth":819,"depth":819,"links":820},2,[821,822,823,829,830,831,836,837,838],{"id":364,"depth":819,"text":365},{"id":386,"depth":819,"text":387},{"id":437,"depth":819,"text":438,"children":824},[825,827,828],{"id":442,"depth":826,"text":443},3,{"id":478,"depth":826,"text":479},{"id":522,"depth":826,"text":523},{"id":554,"depth":819,"text":555},{"id":583,"depth":819,"text":584},{"id":608,"depth":819,"text":609,"children":832},[833,834,835],{"id":623,"depth":826,"text":624},{"id":704,"depth":826,"text":705},{"id":738,"depth":826,"text":739},{"id":756,"depth":819,"text":756},{"id":779,"depth":819,"text":780},{"id":805,"depth":819,"text":805},"從零開始理解 Nginx 的核心功能，包含反向代理、負載平衡與靜態資源處理，並延伸比較 Kubernetes 在現代架構中的角色差異。","md",null,{"tags":843,"category":203,"date":850},[844,845,846,847,848,849],"nginx","web server","reverse proxy","load balancing","kubernetes","devops","2026-04-11",true,{"title":275,"description":839},"sHla7xJQwB8WXxAw63Zpa_ECiCS_fuAm-HD4yKDGW_w",[855,857],{"title":271,"path":272,"stem":273,"description":856,"children":-1},"深入了解 microservices 架構的核心概念，並探討其在現代系統設計中的優勢與實際應用場景。",{"title":279,"path":280,"stem":281,"description":858,"children":-1},"從基礎語法到實際應用，帶你理解 YAML configuration 的核心概念，以及為什麼 Docker、Kubernetes、GitHub Actions 都選擇它。",1776690846981]