> ## Content Index
> Fetch the complete content index at: https://blog.anthea.day/llms.txt
> Use this file to discover other available public pages before exploring further.

# Nginx 從入門開始的網站架設 (1)：Ngnix 基本設定
- URL: https://blog.anthea.day/series-nginx-1/
- Published: 2022-06-17T15:39:03.000Z
- Updated: 2026-10-21T03:49:01.000Z
- Author: Ensui / Anthea Wu
- Tags: #Migrated-1792241843742, #Import 2026-10-17 12:57, Coding, Nginx 從入門開始的網站架設

最近有個案子，客戶覺得我們第一次交上去的壓力測試結果太狼狽，要我們想辦法把數字做得更好，他們提出的解決方式是負載平衡，多開了兩台 server 給我們自己設定。原本打算利用 windows 內建的 Network Load Balance（NLB）來進行設定，礙於網路管理的基礎知識不足，一直卡東卡西卡了兩天還是沒有頭緒 QQ

由於客戶退件到下一次審查的時間只有 7 個工作天，扣掉 PM 寫報告的一天、報告送印一天，實際研究時間，包含壓力測試總共只有 5 天……所以 NLB 研究了兩天之後果斷放棄，把時間壓在 Nginx 上，還好花了一天時間就稍微有點樣子了，在這邊紀錄順便複習今天學習到的內容。

---

### Beginner’s Guide

從 Nginx 的官網上[下載](https://nginx.org/en/download.html?ref=blog.anthea.day)下來的檔案內容其實很簡單，只有一個 exe 執行檔和一些資料夾。Nginx 的運作方式主要是靠 `nginx.conf` 來決定的，這個檔案通常會在 `/usr/local/nginx/conf` `/etc/nginx` `/usr/local/etc/nginx` 這幾個目錄底下。

#### 對 Nginx 進行操作

可以雙擊來執行 `nginx.exe`，或是在 cmd 中切換到 nginx 的資料夾底下，執行 `start nginx` 來啟動它。一旦 nginx 被執行起來，就需要以 `nginx -s <options>` 的方式來控制。

![](https://cdn-images-1.medium.com/max/800/1*L2kaR7fwfXOATuY_VPytGA.png)

`nginx -x <options> 中 options 可以填入的內容和說明。`

其中 `nginx -s stop` 和 `nginx -s quit` 的差別在於，`quit` 會停止接收 request，等到手上這個 request 處理完之後，才會結束目前的服務；而 `stop` 則是會立刻結束服務。另外， `nginx -s quit` 只能由開啟 nginx 的使用者（帳號）執行。

除了 `nginx -s stop` 之外，最常會用到的應該是 `nginx -s reload`。如果 `nginx.conf` 有進行修改的話，執行 `reload`，主程式才會吃到這個設定的更改。如果主程式設定成功，會通知其他舊有的程式，讓他們停止接收新的 request，將手上的 request 處理完之後結束服務，用新的設定開啟一個新的程式。如果主程式設定失敗的話，會把設定 rollback 成舊的設定並繼續執行。

#### config 檔案的名詞

在修改 `nginx.conf` 之前，我們先來認識一下 config 檔案裏面基本的組成元素。

`**simple directives**` 包含指令名稱和參數，兩者之間用半形空白` `來區隔，並且以半形分號 `;` 作為結尾。

`**block directive**` 結構和 `simple directives` 一樣，但他會被半形大括號 `{}`包起來。

`**context**` 一個 `block directive` 裡面有其他的 `directive`，例如 `events` `http` `server` `location`。

---

### 開始一個靜態服務

假設我們的 `nginx.exe` 位於 `nginx` 底下，接著我們在這裡新增一個資料夾 `data`，並在 `data` 裡面再新增兩個資料夾，分別是 `www` 和 `images`，將 `index.html` 放入 `www` 資料夾中，將任意的圖片放到 `images` 資料夾內，這時候你的資料夾結構會像這樣：

```
nginx
 |- nginx.exe 
 |- conf
 |- data
 |  |- www
 |  |   |- index.html
 |  |- images
 |  |   |- test.jpg
 |- ...
```

開啟你的 `nginx.conf`，並用下面的內容取代掉原本的設定：

開始一個靜態服務的設定

在設定 `location` 的時候，如果一個 url 如果有多個相符的區塊，nginx 會選擇具有最長前綴的區塊來發送請求。以上面的例子來說，第一個區塊的前綴是 `/`，長度為 1，因此只有當所有區塊都找不到相符的前綴時，才會使用者個前綴來作為發送請求的目的地。

將 `nginx.conf` 儲存之後，開啟 cmd 將目錄切換到 nginx 的資料夾底下，如果已經啟動過 nginx，執行 `nginx -s reload` 來重新載入改寫好的 `nginx.conf`；如果還沒有，輸入 `start nginx` 來啟動 nginx。

沒有出現任何錯誤的話，就可以打開瀏覽器，輸入 `localhost:8081` 就可以看到我們剛剛新增在 `/data/www` 底下的 `index.html` 了。

---

> 參考資料：[官方文件](https://nginx.org/en/docs/beginners%5Fguide.html?ref=blog.anthea.day)