接下來這篇就會比較偏 server 設定了!
nginx 是一套伺服器軟體,和 apache 並駕齊驅
(其實我覺得 nginx >>> apache XD)
主要是 nginx 清量快速
我們要拿他幫 nodejs 處理接收 request 的部分,再將 request 導往 nodejs
所以感覺就會如下圖:
可以讓 nginx 當作是 load balancer,
透過 reverse proxy 的方式轉發 request 給 nodejs, 讓 nginx 承受流量
這就是我們今天要做的事情,
所以首先,我們就要先裝 nginx,因此就先進虛擬機吧!
$ sudo apt-get update && sudo apt-get upgrade -y
$ sudo apt-get install nginx
這樣就會安裝一個 nginx 了!
Nginx 的設定檔都是放在 /etc/nginx/
底下
個別網站的設定放在 /etc/nginx/sites-available
如果要讓該網站上線,則會將 /etc/nginx/sites-available
的設定檔 link 到 /etc/nginx/sites-enable
因此若想自己新增設定檔的話,慣例是會在 available 新增,然後再 link 到 enable
如果我們進到 /etc/nginx/sites-enable
的話,裡面應該已經有一個 default
的設定檔了
$ sudo vim /etc/nginx/sites-enable/default
內容應該是:
server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
root /usr/share/nginx/html;
index index.html index.htm;
# Make site accessible from http://localhost/
server_name localhost;
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ =404;
# Uncomment to enable naxsi on this location
# include /etc/nginx/naxsi.rules
}
# Only for nginx-naxsi used with nginx-naxsi-ui : process denied requests
#location /RequestDenied {
# proxy_pass http://127.0.0.1:8080;
#}
...
}
將設定檔改成如下:
upstream nodejs {
server 127.0.0.1:3000;
#server 127.0.0.1:3001;
}
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://nodejs;
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;
}
}
解釋一下以下這段:
upstream nodejs {
server 127.0.0.1:3000;
#server 127.0.0.1:3001;
}
下面這段則是 proxy pass 的部分, 會將 /
的流量導到 nodejs 的 server cluster 裡面,不過因為我們現在只有一台 server 開起來,所以只會被導到 3000 port 的那台機器
location / {
proxy_pass http://nodejs;
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;
}
如果 nodejs server 的承載量不夠,可以開好幾檯,只要 port 不一樣即可
這樣就可以建立一個 nodejs cluster
再來使用 forever 開啓 nodejs server
再重新開啟 nginx
使用 postman 戳戳看 API
就成功囉~~