[ NodeJS ] NodeJS + nginx 設置
工欲善其事,必先利其器
我們的環境使用Amazon EC2 的Ubuntu
Ubuntu上面準備事項請參考這篇
但是有個好用的工具 byobu, 安裝 sudo apt-get install byobu
如果要每次透過文字介面登入時都自動啟動byobu,請輸入byobu-enable
NodeJS 使用 PM2 去管理
為了要加速與封包導向用途, 大部份的人都推薦用Nginx - Reverse Proxy 來加速
假如說我們把NodeJS的App建立在port 8080
這樣我們的URL 會長的像 http://localhost:8080/
如果要讓port number消失, 可以使用iptables將封包導向
或是可以使用Nginx將特定的port封包導向到另一個
使用iptables
如果有使用virtual host的話可以看這篇
要讓virtual host生效, 必須先在sites-available內建立該host的config
然後使用soft link過去
sudo ln -s /etc/nginx/sites-available/test.com /etc/nginx/sites-enabled/
Reference
我們的環境使用Amazon EC2 的Ubuntu
Ubuntu上面準備事項請參考這篇
但是有個好用的工具 byobu, 安裝 sudo apt-get install byobu
如果要每次透過文字介面登入時都自動啟動byobu,請輸入byobu-enable
NodeJS 使用 PM2 去管理
- pm2 start app.js
- envirent_variable=value port=8080 pm2 start app.js
- 新增環境變數
- envirent_variable=value
- port = 8080 (指定環境變數por=8080)
- pm2 logs (看所有的logs)
為了要加速與封包導向用途, 大部份的人都推薦用Nginx - Reverse Proxy 來加速
假如說我們把NodeJS的App建立在port 8080
這樣我們的URL 會長的像 http://localhost:8080/
如果要讓port number消失, 可以使用iptables將封包導向
或是可以使用Nginx將特定的port封包導向到另一個
使用iptables
- sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080
- sudo apt-get install nginx
- sudo vi /etc/nginx/sites-available/default
- 將port 80 的Request導向port 8080
# 設定一個名稱在NodeJS App跑的port上
upstream appName {
server 127.0.0.1:8080;
}
server {
# 監聽port 80
listen 80;
server_name 你的domain/app網址; #ex: neil.domain.com
# 將網址是/開頭的Request都走向此規則
location / {#try_files $uri $uri/ =404; 用原生NodeJS架http/https server別開啟這行proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header Host $http_host;proxy_set_header X-NginX-Proxy true;proxy_pass http://appName/;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;}
} - 重啟Nginx
- sudo service nginx stop
- sudo service nginx start
- 若無法啟動可以直接執行sudo nginx觀察錯誤
- 就可以直接測試http://localhost/, 應該就會導向到http://localhost:8080
如果有使用virtual host的話可以看這篇
要讓virtual host生效, 必須先在sites-available內建立該host的config
然後使用soft link過去
sudo ln -s /etc/nginx/sites-available/test.com /etc/nginx/sites-enabled/
Reference
- https://gist.github.com/soheilhy/8b94347ff8336d971ad0
- https://www.scalescale.com/tips/nginx/nginx-location-directive/
- http://www.haorooms.com/post/4pz
- https://www.digitalocean.com/community/tutorials/how-to-set-up-a-node-js-application-for-production-on-ubuntu-14-04
- http://blog.winwu.today/2015/03/ubuntu-1404-service-nginx-restart-fail.html
- https://nodejust.com/nginx-nodejs-server-configuration/
- http://www.sitepoint.com/configuring-nginx-ssl-node-js/
留言
張貼留言