# 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