---
# System prepended metadata

title: nginx筆記

---

# nginx筆記
## 安裝Homebrew
Homebrew 可以在 Mac 上安裝系統沒有的套件
請參考網址`https://brew.sh/index_zh-tw`下載安裝
## 安裝nigix
### $ `brew install nginx`
#### 安裝完成後預設應該所有檔案會在/homebrew/etc/nginx/資料夾下
#### nginx.config是我們要實作的檔案，nginx.config.default是他預設會執行的檔案（假如沒有自己設定的話）
## 啟動 nginx
### `$ nginx`//啟動nginx
### `$ nginx -s quit`//正常結束nginx
### `$ nginx -s stop`// 暴力結束nginx
### `$ nginx -s reload`// 當我們改配置文檔後數入此指令可以直接進行配置更新
### `$ ps axw -o pid,ppiduser,%cpu,vsz,wchan,command | egrep '(nginx|PID)`//這個指令可以看nginx目前正在執行的進程
## config 檔案配置
### global全局配置
```
worker_processes  1;//設定worker進程數量
```
### events 模塊
```
events {
    worker_connections  1024;//設定單個worker進程支援最大網路連接數
}
```
### http 模塊 //可以在這裡設定很多個server listen到不同的port
```conf
http {
    server {
        listen 8080;#nginx server listen的port
        server_name ReactSSR;
        location /test{#所有符合/test的都會進來，然後去localhost:8081裡找該url對應的檔案
            proxy_pass http://localhost:8081;
            proxy_http_version 1.1;
            proxy_set_header Host $host;
        }
        location /{#所有符合根目錄的都會進來，然後去localhost:3000裡找該url對應的檔案
            proxy_pass http://127.0.0.1:3000;
            proxy_http_version 1.1;
            proxy_set_header Host $host;        
        }
    }
    server {
        listen 8081;
        server_name localhost;
        location /{
            #return 200 "hello";
            root /opt/homebrew/etc/nginx/data/up1;
        }
    }
}
```
只要網址符合location上定義的網址透過proxy_pass可以丟給不同server代理
proxy_pass 要反向代理的內部網頁伺服器位置，這裡設定的就是我們的 nodejs express server 
proxy_http_version 設定反向代理 http 使用的版本
proxy_set_header 設定反向代理要帶的 header 內容
location裡面的root 
打開瀏覽器預設是8080 port
 ### location 路徑匹配優先級
可以參考
http://bigpxuan.blogspot.com/2018/07/nginx-server-location.html
### 參考資料
https://tn710617.github.io/zh-tw/nginx/

https://www.youtube.com/watch?v=fogbQqsNK7w&ab_channel=ZeroToSenior

https://medium.com/%E5%89%8D%E7%AB%AF%E5%A3%B9%E5%85%A9%E4%B8%89%E4%BA%8B/%E8%81%8A%E8%81%8A%E9%97%9C%E6%96%BC%E5%9F%BA%E6%9C%AC%E7%9A%84-nginx-reverse-proxies-and-nodejs-express-web-server-2a1c8e7e7de1

https://www.youtube.com/watch?v=6CjbezdbB8o&t=598s&ab_channel=EnricoPortolan

