Github:[freeCodeCamp.org-NGINXTutorialforBeginners](https://github.com/RainBowT0506/freeCodeCamp.org-NGINXTutorialforBeginners)
# What is NGINX
## NGINX 簡介
- NGINX 是一個開源的網頁伺服器軟體,常用於反向代理、負載平衡和快取。
- 對後端開發者來說,了解 NGINX 是非常重要的。
## NGINX 的運作方式
- 當你訪問 Airbnb.ca 時,瀏覽器會收到大量的內容,如圖片和文本,這些內容是通過網路請求從伺服器獲取的。
- 可以通過檢查瀏覽器的網路標籤來查看這些請求。

## NGINX 的角色

- 瀏覽器向伺服器發送請求,伺服器回應並提供網頁內容。
- 在此過程中,NGINX 充當反向代理,瀏覽器的請求先到達 NGINX,再由 NGINX 轉發給 Airbnb 伺服器,最後再由 NGINX 將回應傳回瀏覽器。

- 這種結構稱為反向代理(Reverse Proxy)。
## 使用 NGINX 的好處
### 負載平衡

- 當網站流量很大時,NGINX 可以將請求分配給多個伺服器,以減少單一伺服器的負載。
- NGINX 作為負載平衡器,能夠提高應用程式的擴展性和效率。
### 加密

- 如果網站使用 HTTPS,表示伺服器加密和解密數據。
- NGINX 可以集中處理這些加密和解密過程,避免每個伺服器都需要單獨設置。

# NGINX Installation
## 安裝步驟
1. 打開終端機,執行 `brew install nginx`(需要先安裝 Homebrew)。
2. 安裝完成後,檢查 `cd /usr/local/etc/nginx` 目錄下的文件和資料夾。
* 可以使用 which nginx 命令來查看 Nginx 的安裝路徑。
```
which nginx
/opt/homebrew/bin/nginx
```
* Nginx 配置文件通常位於 /opt/homebrew/etc/nginx。
3. 你可以使用 ls 命令來列出目錄中的文件,確保存在 nginx.conf 配置文件。
```
fastcgi.conf mime.types servers
fastcgi.conf.default mime.types.default uwsgi_params
fastcgi_params nginx.conf uwsgi_params.default
fastcgi_params.default nginx.conf.default win-utf
koi-utf scgi_params
koi-win scgi_params.default
```
疑問:[為什麼安裝路徑 /opt/homebrew/bin/nginx 卻是使用 cd /opt/homebrew/etc/nginx?](https://hackmd.io/tqmS-QWjRfaY_rn9ilxIoQ#%E7%96%91%E5%95%8F)
## 配置 NGINX
- 使用 code . 命令後,VS Code 打開當前目錄
```
code .
zsh: command not found: code
```
- 設定 code 命令行工具
* 打開 Visual Studio Code。
* 按 Cmd+Shift+P 打開命令面板。
* 輸入 `Shell Command: Install 'code' command in PATH`,並選擇該命令。
- 使用 VS Code 打開 NGINX 配置文件 `nginx.conf`。
- 這個文件是用來配置 NGINX 反向代理的核心文件。
## 啟動 NGINX
- 在終端機中執行 `nginx` 命令來啟動 NGINX。
- 打開瀏覽器並訪問 `localhost:8080`,你會看到 NGINX 已經啟動並在提供網頁內容。


# NGINX Terminology
## 簡介
- 安裝並運行 NGINX
- 開始返回應用程式所需的文件和文件夾及圖像
## nginx.conf 文件
- 主要包含兩個部分:指令 (directives) 和上下文 (context)
## 指令 (Directives)
- 以鍵值對形式出現
- 例如:`worker_processes 1;` 和 `include mime.types;`
## 上下文 (Context)
- 以大括號包圍的代碼塊
- 例如:`events` 和 `http` 上下文
- 在上下文中包含特定的指令
## HTTP 上下文
- 定義 HTTP 服務器
- 包含配置服務器的指令
# Serving Static Content
## 步驟
1. 創建目錄並在 VS Code 中打開
2. 創建 `index.html` 文件,寫入簡單的 HTML 內容
3. 配置 NGINX 以服務該文件
3. 使用 `ngix -s reload` 重新加載 Server

## 配置 NGINX
- 在 `nginx.conf` 文件中添加 HTTP 和 events 上下文
- 定義 server 上下文,並添加相關指令
- `listen` 指令設定端口
- `root` 指令設定文件路徑
- 重載 NGINX 配置使更改生效
# Mime Types
## 簡介
- 添加 CSS 文件,並在 HTML 中引用
- 遇到樣式未應用的問題,需配置 mime types

## 解決方案
- 檢查文件的 content type
- 配置 HTTP 上下文中的 mime types
- 為不同的文件類型設置對應的 mime types
## 使用 NGINX 默認 mime types
- 使用 include 指令引入默認的 mime types 配置
- 重載 NGINX 配置使更改生效
# Location Context
## 簡介
- 介紹 location block 或 location context 的重要性
- 允許我們指定特定的端點和頁面
## 設置範例
1. 創建一個 fruits 目錄並在其中放置一個 index.html 文件
2. 配置 NGINX 以服務這個文件
## 配置 NGINX
- 在 server 上下文中使用 location 指令
- `location /fruits` 設定路徑
- 指定 root 目錄以服務文件
```
http {
include mime.types;
server {
listen 8080;
root /Users/userName/Desktop/mysite;
location /fruits {
root /Users/userName/Desktop/mysite;
}
}
}
events {}
```
- 重新加載 NGINX 配置
* http://localhost:8080/fruits/
## Alias 使用
- 當需要服務不同路徑但不希望附加原始路徑時使用 alias
```
http {
include mime.types;
server {
location /carbs {
alias /Users/userName/Desktop/mysite/fruits;
}
}
}
events {}
```
- 範例:`location /carbs` 使用 alias 指向 fruits 目錄
- 重新加載 NGINX 配置
* http://localhost:8080/carbs/
## 處理不同文件名
- 創建 vegetables 目錄並放置 veggies.html 文件
- 使用 try_files 指令指定不同的文件名
- 順序嘗試指定的文件,若不存在則返回 404
```
2024/07/30 14:25:31 [error] 6622#0: *39 directory index of "/Users/userName/Desktop/mysite/vegetables/" is forbidden, client: 127.0.0.1, server: , request: "GET /vegetables/ HTTP/1.1", host: "localhost:8080"
```
```
http {
include mime.types;
server {
location /vegetables{
root /Users/rainbowt/Desktop/mysite;
try_files /vegetables/veggies.html /index.html =404;
}
}
}
events {}
```
## 正則表達式匹配
- 在 location 中使用正則表達式
- 例如:匹配 `/count/數字` 路徑
- 使用 `try_files` 指定匹配的文件或返回 404
```
http {
include mime.types;
server {
listen 8080;
root /Users/rainbowt/Desktop/mysite;
location ~* /count/[0-9] {
root /Users/rainbowt/Desktop/mysite;
try_files /index.html =404;
}
}
}
events {}
```
## 總結
- 使用 location 和 alias 指令靈活配置不同路徑和文件服務
- 使用 try_files 指令處理不同的文件名和返回狀態
# Rewires and Redirect
## 介紹
* 本次討論的主題是 nginx 中的重定向(redirect)和重寫(rewrite)。
* 透過範例說明這些概念的使用方式。
## 重新載入設定並測試重定向
* 設定 nginx 時可以使用 location 區塊來處理不同的 URL 路徑。
* 在範例中,當訪問 `/count/5` 或 `/count/2` 時,會被重定向到其他頁面,這是透過正規表達式來完成的。
## 重定向(Redirect)
* 重定向是一個簡單的概念,首先在 nginx 設定檔中新增一個 location 區塊。
* 例如,訪問 `/crops` 時,想要重定向到 `/fruits`,可以使用以下設定:
```nginx
location /crops {
return 307 /fruits;
}
```
* 重新載入 nginx 設定後,訪問 `/crops` 會自動重定向到 `/fruits`,並在瀏覽器的 URL 欄位中顯示 `/fruits`。
## 重寫(Rewrite)
* 重寫與重定向不同,它不會改變瀏覽器的 URL,只會在伺服器端改變路徑處理。
* 範例中,訪問 `/number/3` 時,希望 URL 保持不變但實際處理的路徑變為 `/count/3`:
```nginx
rewrite ^/number/(\w+)$ /count/$1;
```
* 這樣設定後,訪問 `/number/3` 時,URL 保持不變,但伺服器實際會處理 `/count/3` 的內容。
## 總結
* 重定向(redirect)用於將用戶導向另一個 URL,並在瀏覽器顯示新的 URL。
* 重寫(rewrite)則是改變伺服器處理的路徑,但保持瀏覽器顯示的 URL 不變。
* 理解和靈活運用這些功能對於 nginx 的配置和使用非常重要。
# NGINX as a Load Balancer
## 介紹
* 當應用程式開始有大量使用者時,我們需要擴展應用程式。
* 最佳的擴展方式是建立多個伺服器。
* 問題在於用戶該如何選擇伺服器進行請求,這是 NGINX 所解決的問題。
* NGINX 位於用戶與伺服器之間,負責將請求轉發至特定伺服器。
## 負載平衡(Load Balancer)的概念
* 常見的算法是輪循算法(Round Robin),將請求依次分配給不同的伺服器。
* 需要配置多個伺服器,最佳方式是使用 Docker 建立隔離的伺服器容器。
## 建立 Docker 容器
1. **建立伺服器應用程式**
* 建立新目錄並在其中創建 `index.js`。
* 使用 Express 建立簡單的 Node.js 應用程式:
```javascript
const express = require('express');
const app = express();
app.get('/', (req, res) => {
res.send('I am an endpoint');
});
app.listen(7777, () => {
console.log('Listening on port 7777');
});
```
* 初始化 Node 應用程式並安裝 Express:
```bash
npm init -y
npm install express
```
2. **建立 Dockerfile**
* 建立 Dockerfile,內容如下:
Nodejs Docker WebApp(失效):https://nodejs.org/docs/guides/nodejs-docker-webapp/

```
FROM node:16
# Create app directory
WORKDIR /usr/src/app
# Install app dependencies
# A wildcard is used to ensure both package.json AND package-lock.json are copied
# where available (npm@5+)
COPY package*.json ./
RUN npm install
# If you are building your code for production
# RUN npm ci --only=production
# Bundle app source
COPY . .
EXPOSE 8080
CMD ["node", "server.js"]
```
3. **建立 Docker 映像**
* 在伺服器目錄中執行命令建立映像:
```bash
docker build -t myserver
```
4. **運行 Docker 容器**
* 運行多個容器,映射到不同的本機端口:
```bash
docker run -d -p 1111:7777 myserver
docker run -d -p 2222:7777 myserver
docker run -d -p 3333:7777 myserver
docker run -d -p 4444:7777 myserver
```
## 配置 NGINX 負載平衡
1. **修改 NGINX 設定檔**
* 打開並編輯 NGINX 設定檔:
```nginx
upstream backendservers {
server 127.0.0.1:1111;
server 127.0.0.1:2222;
server 127.0.0.1:3333;
server 127.0.0.1:4444;
}
server {
listen 8080;
location / {
proxy_pass http://backendservers;
}
}
```
2. **重新載入 NGINX 設定**
* 執行命令重新載入 NGINX 設定:
```bash
sudo nginx -s reload
```
3. **測試負載平衡**
* 訪問 `localhost:8080`,應用程式將在多個伺服器之間進行輪循。
## 總結
* NGINX 作為負載平衡器,能有效分配請求至多個伺服器。
* 使用 Docker 建立多個伺服器容器,有助於快速擴展應用程式。
* 輪循算法是實現負載平衡的常用方法之一。
# 指令
## 測試 Nginx 配置
在重新加載 Nginx 配置之前,先測試配置文件是否有誤
```
sudo nginx -t
```
output:
```
nginx: the configuration file /opt/homebrew/etc/nginx/nginx.conf syntax is ok
nginx: configuration file /opt/homebrew/etc/nginx/nginx.conf test is successful
```
## 重新加載 Nginx 配置
重新加載 Nginx 配置以應用更改
```
sudo nginx -s reload
```
## 查看 Homebrew 安裝的 Nginx 錯誤日誌
```
sudo tail -f /opt/homebrew/var/log/nginx/error.log
```
## 清除錯誤日誌文件
```
sudo truncate -s 0 /opt/homebrew/var/log/nginx/error.log
```
## Hard reload
Cmd + Shift + R
# 疑問
## NGINX Installation
Q:
為什麼安裝路徑 /opt/homebrew/bin/nginx
卻是使用 cd /opt/homebrew/etc/nginx
A:
這是因為不同的安裝路徑分別有不同的用途:
1. **執行檔路徑**:
- `/opt/homebrew/bin/nginx` 是 Nginx 的執行檔路徑。這裡存放的是 Nginx 的可執行文件,也就是你啟動 Nginx 服務時所使用的程式。
2. **配置檔案路徑**:
- `/opt/homebrew/etc/nginx` 是 Nginx 的配置檔案所在路徑。這裡存放的是 Nginx 的配置文件,如 `nginx.conf`,以及其他相關的設定文件。這些文件控制 Nginx 的運行方式和行為。
總結來說,執行檔和配置檔案通常會分開存放在不同的目錄中:
- **執行檔**:`/opt/homebrew/bin/`
- **配置檔案**:`/opt/homebrew/etc/`
這樣的設置有助於清晰地管理應用程式的各個部分,並且遵循了 Unix 系統中的標準慣例。如果你需要啟動、停止或重啟 Nginx 服務,你會使用執行檔,而如果你需要修改 Nginx 的行為,你會編輯配置檔案。
## Nginx 命令
```
nginx % nginx -s reload
nginx: [alert] kill(25599, 1) failed (3: No such process)
```
### nginx -s reload 沒反應
nginx -s reload 沒反應,Content-Type:
text/plain 沒有改成 text/css
可以開無痕或新 user 網頁來做三角驗證。
使用清除快取解決問題。
## 403 Forbidden
查看 Nginx 錯誤日誌
```
sudo tail -f /opt/homebrew/var/log/nginx/error.log
2024/07/30 11:06:22 [notice] 4047#0: signal process started
2024/07/30 11:06:36 [error] 4048#0: *19 "/Users/userName/Desktop/mysite/index.html" is forbidden (13: Permission denied), client: 127.0.0.1, server: , request: "GET / HTTP/1.1", host: "localhost:8080"
```
我重開機後正常,我懷疑沒有重新加載 .zshrc 文件
# 關鍵字
- **NGINX**:一個開源的網頁伺服器軟體,用於反向代理、負載均衡和緩存。
- **反向代理(Reverse Proxy)**:NGINX作為中間伺服器,接收客戶端的請求,然後將請求轉發給後端伺服器,接收後端伺服器的響應後再傳回給客戶端。
- **負載均衡(Load Balancing)**:當有多個後端伺服器時,NGINX將請求分配給不同的伺服器以均衡負載,提升效能和可靠性。
- **HTTP/HTTPS**:HTTP是網頁數據傳輸的協議,HTTPS是其安全版本,通過加密來保護數據傳輸安全。
- **AWS(Amazon Web Services)**:提供雲計算服務的平臺,許多公司使用其來託管伺服器。
- **伺服器瓶頸(Server Bottleneck)**:當伺服器無法處理所有傳入請求時會出現的效能問題,通常導致延遲增加。
- **加密和解密(Encryption and Decryption)**:保護數據傳輸安全的過程,加密將數據轉換為不可讀的形式,解密將其轉換回原始形式。
- **Homebrew**:Mac上的包管理器,用於安裝和管理軟體包。
- **配置文件(Configuration File)**:如nginx.conf,用於設置NGINX的各種功能和參數。
- **本地伺服器(localhost)**:指向本機的伺服器,用於測試和開發。
- **網絡請求(Network Request)**:客戶端向伺服器發送的請求,用於獲取網頁內容。
- **網絡標籤(Network Tab)**:瀏覽器開發者工具中的一個標籤,用於檢查網絡請求和響應。
- **瀏覽器(Browser)**:用於訪問網頁的應用程序,如Chrome、Firefox等。
- **內容(Content)**:網頁上的文本、圖片、視頻等資源。
- **映像(Image)**:網頁上的圖片資源。
- **檢查(Inspect)**:使用瀏覽器開發者工具查看和調試網頁。
- **HTTP狀態碼(HTTP Status Code)**:伺服器返回的響應碼,用於表示請求的結果。
- **雲伺服器(Cloud Server)**:託管在雲計算平臺上的伺服器,如AWS上的伺服器。
- **請求處理(Request Handling)**:伺服器接收和處理客戶端請求的過程。
- **用戶端(Client)**:發送請求並接收響應的設備或應用程序,如用戶的電腦或手機。
- **指令(Directive)**:NGINX配置文件中的鍵值對,如`worker_processes 1;`表示工作進程數量為1。
- **上下文(Context)**:定義配置範圍的代碼塊,用大括號包圍,如`events`上下文和`http`上下文。
- **HTTP上下文(HTTP Context)**:定義HTTP伺服器配置的上下文,其中包含許多指令。
- **事件上下文(Events Context)**:管理NGINX事件處理的上下文。
- **伺服器上下文(Server Context)**:在HTTP上下文內部,用於定義單個伺服器配置的上下文。
- **靜態內容(Static Content)**:指不需要動態生成的文件,如HTML、CSS和圖片文件。
- **端口(Port)**:網絡伺服器監聽請求的通訊端口,如`listen 8080;`表示監聽8080端口。
- **根目錄(Root Directive)**:指定伺服器要提供的文件所在的根目錄,如`root /path/to/site;`。
- **配置重載(Configuration Reload)**:重新加載NGINX配置文件的命令,如`nginx -s reload`。
- **MIME類型(Mime Types)**:定義不同文件類型的標識方法,如`text/css`表示CSS文件。
- **文檔類型(DOCTYPE)**:HTML文件的文檔類型宣告,如`<!DOCTYPE html>`。
- **字符集(Charset)**:指定HTML文件的字符編碼,如`<meta charset="UTF-8">`。
- **標題(Head)**:HTML文件的頭部區域,用於包含元數據和鏈接外部資源。
- **超文本標記語言(HTML)**:用於構建網頁結構的標記語言。
- **連結(Link)**:HTML標籤,用於連接外部CSS文件,如`<link rel="stylesheet" href="styles.css">`。
- **背景顏色(Background Color)**:CSS屬性,用於設置元素的背景顏色。
- **顏色(Color)**:CSS屬性,用於設置元素的文本顏色。
- **硬重載(Hard Reload)**:強制重新加載網頁並清除緩存的操作,通常使用命令`Command+Shift+R`。
- **緩存(Caching)**:在客戶端或伺服器端保存已加載的資源,以提高後續請求的加載速度。
- **位置上下文(Location Context)**:NGINX配置中的一個重要概念,用於指定特定的端點或頁面,以服務不同類型的HTML元素。
- **目錄(Directory)**:在網站中,用於組織和管理不同類型的內容。例如,`fruits`目錄包含水果相關的HTML文件。
- **無序列表(UL)**:HTML標籤,用於創建無序列表。
- **列表項(LI)**:HTML標籤,用於創建列表中的單個項目。
- **位置塊(Location Block)**:用於在NGINX配置文件中定義特定路徑的配置。例如,`location /fruits`定義了當訪問`/fruits`時的行為。
- **根目錄(Root)**:指示伺服器從哪個目錄服務文件。例如,`root /path/to/site`。
- **別名(Alias)**:在NGINX配置中,用於指定一個路徑別名,與`root`不同,它不會將請求的路徑附加到別名路徑的末尾。
- **重載(Reload)**:重新加載NGINX配置文件以應用更改。
- **403 Forbidden**:HTTP狀態碼,表示伺服器拒絕提供請求的資源。
- **404 Not Found**:HTTP狀態碼,表示伺服器無法找到請求的資源。
- **嘗試文件(Try Files)**:NGINX指令,用於指定當請求的文件不存在時要嘗試的其他文件。例如,`try_files /path/to/file /index.html =404`。
- **正則表達式(Regular Expression)**:用於在NGINX位置上下文中匹配特定的URL模式。
- **Tilde符號(~)**:在NGINX配置中,用於指示正則表達式匹配。
- **星號(*)**:在正則表達式中,用於匹配零個或多個字符。
- **重定向(Redirect)**:將一個URL重定向到另一個URL。例如,將所有`/count/`路徑重定向到根目錄。
- **靜態內容(Static Content)**:指不需要動態生成的文件,如HTML、CSS和圖片文件。
- **標題(Header)**:HTTP響應的一部分,用於提供有關響應的元數據。
- **內容類型(Content Type)**:HTTP標頭,用於指示資源的媒體類型。例如,`text/html`表示HTML文件。
- **樣式表(Stylesheet)**:CSS文件,用於定義網頁的樣式和佈局。
- **鏈接標籤(Link Tag)**:HTML標籤,用於在HTML文件中引入外部CSS文件。
- **重定向(Redirect)**:將一個URL重定向到另一個URL,使用HTTP狀態碼如307來進行跳轉。例如,當訪問`/crops`時,重定向到`/fruits`。
- **重寫(Rewrite)**:改變請求的URL路徑,但保持瀏覽器中的URL不變。例如,將`/number/{number}`重寫為`/count/{number}`,但URL仍然顯示為`/number/{number}`。
- **307重定向(307 Redirect)**:HTTP狀態碼,表示臨時重定向,請求方法和主體在重定向後保持不變。
- **變量(Variable)**:在重寫規則中使用的佔位符,如`$1`表示匹配的第一個分組。
- **正則表達式(Regular Expression)**:用於匹配URL模式的語法,例如`\w+`表示匹配一個或多個字母或數字。
- **位置塊(Location Block)**:在NGINX配置中定義特定路徑的配置。例如,`location /crops`定義了當訪問`/crops`時的行為。
- **返回指令(Return Directive)**:在NGINX配置中用於立即返回特定狀態碼和URL的指令。例如,`return 307 /fruits;`表示返回307重定向到`/fruits`。
- **重寫指令(Rewrite Directive)**:在NGINX配置中用於改變請求URL的指令。例如,`rewrite ^/number/(\w+)$ /count/$1;`表示將`/number/{number}`重寫為`/count/{number}`。
- **NGINX重載(NGINX Reload)**:重新加載NGINX配置文件以應用更改,通常使用命令`nginx -s reload`。
- **URL模式(URL Pattern)**:用於匹配特定URL結構的模式,例如`/number/{number}`。
- **動態端點(Dynamic Endpoint)**:具有可變部分的URL端點,例如`/number/{number}`中的`{number}`部分。
- **靜態端點(Static Endpoint)**:固定不變的URL端點,例如`/crops`或`/fruits`。
- **HTML元素(HTML Elements)**:網頁中的基本組成部分,如標籤和文本。
- **內容轉發(Content Forwarding)**:將請求轉發到不同的路徑,但保持原始URL不變。
- **伺服器上下文(Server Context)**:在NGINX配置文件中的一個部分,用於定義伺服器相關的配置。
- **根目錄(Root Directive)**:指示伺服器從哪個目錄服務文件,例如`root /path/to/site;`。
- **別名(Alias)**:在NGINX配置中,用於指定一個路徑別名,與`root`不同,它不會將請求的路徑附加到別名路徑的末尾。
- **返回指令(Return Directive)**:在NGINX配置中用於立即返回特定狀態碼和URL的指令。例如,`return 307 /fruits;`表示返回307重定向到`/fruits`。
- **重寫指令(Rewrite Directive)**:在NGINX配置中用於改變請求URL的指令,例如`rewrite ^/number/(\w+)$ /count/$1;`表示將`/number/{number}`重寫為`/count/{number}`。
- **負載均衡(Load Balancing)**:NGINX的高級功能,用於將請求分配給多個伺服器以均衡負載,提高效能和可靠性。
- **負載均衡(Load Balancing)**:將請求分配給多個伺服器以均衡負載,提高效能和可靠性。
- **Docker**:一個用於創建和管理容器化應用程序的工具,容器是隔離的執行環境。
- **Docker容器(Docker Container)**:輕量級、可移植的軟體包,包含應用程序及其所有依賴。
- **Docker映像(Docker Image)**:用於創建容器的靜態快照,包含運行應用程序所需的所有內容。
- **Dockerfile**:一個文本文件,包含構建Docker映像的指令。
- **端口映射(Port Mapping)**:將主機的端口映射到容器內部的端口,以便外部訪問容器中的應用程序。
- **round robin算法**:一種將請求依次分配給每個伺服器的負載均衡算法。
- **上游伺服器(Upstream Server)**:NGINX配置中的一組伺服器,用於負載均衡。
- **反向代理(Reverse Proxy)**:NGINX作為中間伺服器,接收客戶端的請求並將其轉發給後端伺服器,然後將響應返回給客戶端。
- **代理轉發(Proxy Pass)**:NGINX指令,用於將請求轉發給上游伺服器。
- **指令(Directive)**:NGINX配置文件中的鍵值對,用於設置各種功能。
- **上下文(Context)**:定義配置範圍的代碼塊,用大括號包圍。
- **HTTP上下文(HTTP Context)**:定義HTTP伺服器配置的上下文。
- **伺服器上下文(Server Context)**:定義單個伺服器配置的上下文。
- **位置塊(Location Block)**:定義特定路徑的配置。
- **npm**:Node.js的包管理器,用於安裝和管理JavaScript庫和工具。
- **Express**:Node.js的Web應用框架,用於構建伺服器端應用程序。
- **GET請求(GET Request)**:一種HTTP請求方法,用於從伺服器獲取數據。
- **控制台日誌(Console Log)**:在控制台中輸出消息,用於調試和信息顯示。
- **npm腳本(npm Script)**:在package.json文件中定義的命令,可通過`npm run`運行。