0%

Nginx 製作 HomeServer

  1. 安裝 nginx

  2. on 起你的 app (假設為一個 node server on 在 localhost:5000)

  3. 設定 nginx.conf (在下載下來的 nginx根目錄/conf 裡面) 下面的設定檔的意思是監聽 port 80,如果有從 80 進來的,轉跳到 port 5000

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    events{

    }
    http {
    server {
    listen 80 default_server;
    listen [::]:80 default_server;
    server_name localhost;
    # set client body size to 100M #
    client_max_body_size 100M;
    location / {
    proxy_pass http://localhost:5000; #whatever port your app runs on
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection 'upgrade';
    proxy_set_header Host $host;
    proxy_cache_bypass $http_upgrade;
    }
    }
    }
  4. 重新載入 nginx 設定檔 輸入:nginx -s reload

如果你的主機連接的網路不是實體網路,而是在路由器或交換器底下的網路,再做下面的步驟

  1. 設定網關

    1. 先確定伺服器主機接的網路線是最外層的路由器,不要接在 wifi 機上

    2. 在伺服器上的瀏覽器輸入 192.168.1.1 or 直接輸入伺服器 ip 會進入到路由器管理頁面如下圖:

    3. 預設的帳號密碼是 user:user 登入後選擇 port forwarding

    4. 把外網的 80 port 映射到內網的 80 port 給 nginx,nginx 會幫我們映射到內網的 5000 port

  2. 使用 pm2 來監測執行情況,出錯時會自動重啟

    1. 建立一個 pm2.json 在專案根目錄
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    {
    "apps" : [{
    "name": "short link", // 在 pm2 裡面要叫什麼名字
    "cwd": "/home/paultsengapps/ShortLink", // 到專案根目錄的位址
    "script" : "./dist/index.js", // 要執行的程式
    "instances" : "1", // 要啟動幾個實體
    "exec_mode" : "cluster",
    "env": {
    "NODE_ENV": "development",
    "PORT": 3000
    },
    "env_production" : {
    "NODE_ENV": "production",
    "PORT": 5000
    },
    "log_date_format": "YYYY-MM-DD_HH:mm Z",
    "merge_logs": true
    }]
    }
    1. 執行
    1
    pm2 start pm2.json --env production