前言
一直处于todo状态的东西,但本人比较懒,一直没写,但却用了很久。应该是去年开始线上服务器从windows server转到CentOS。(windows server的傻瓜式操作确实很low)当然WS的应用太占内存(类似XAMPP的应用在我的1核1G的学生机根本不行,远程桌面都进不去,报内存不足),所以选择CentOS是必然结果。
好,回归正题:Nginx反向代理node服务,使用pm2做node服务管理。
pm2 一个带有负载均衡功能的Node应用的进程管理器.
为什么使用Nginx反向代理?
很简单,nginx不会用。:)
好吧,当然Nginx 本身就是是一个很强大的高性能Web和反向代理服务器。
准备
- install nginx
install node
1
yum install node
install pm2
1
npm install pm2 -g
node服务
初始化
新建一个项目文件夹,创建一个 package.json 文件1
2
3
4mkdir demoapp
cd demoapp
npm initexpress
使用 express 框架 (以使用express为例)
1
npm install express --save
新建app.js
1
vim app.js
1 | // app.js |
- 创建静态文件目录
1
mkdir public
将你打包好的文件放置在public 文件夹下
- 测试
1
node app.js
访问 you_ip:2000 查看是否可用,ctrl+c 关闭服务
pm2进程管理
pm2 启动服务1
pm2 start app.js
pm2 常用命令1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 显示PM2启动的所有的应用程序列表
pm2 list
停止app应用进程
pm2 stop APP_NAME
pm2 stop all # 停止所有,也可以指定id。 下同
重启应用
pm2 restart APP_NAME
删除应用
pm2 delete APP_NAME
显示每个应用程序的CPU和内存占用情况
pm2 monit
显示应用的所有信息
pm2 show APP_NAME
nginx配置
上述配置完成,可以进行IP:PORT 进行访问,但还是无法使用域名,所以下面进行nginx反向代理配置。
进入nginx配置路径,并在conf.d添加自己的配置1
cd /etc/nginx/conf.d
配置基本相同,在前缀加上node监听端口1
2
3
4
5
6# *.conf
upstream nodejs {
server 127.0.0.1:2000; # 反向监听2000端口
keepalive 64;
}
同一个域名域名下监听其他端口1
2
3
4
5
6# *.conf
# 例:you_domain/demo 监听服务器3000端口
location /demo/ {
proxy_pass http://127.0.0.1:3000/;
}