dosn
v0.0.8
Published
nginx+node+koa+socket+mysql+ejs 简单尝试
Downloads
18
Maintainers
Readme
share
demo结构还在优化中,nginx监听doso.jeeas.cn的80端口,转发到内部3030端口;
nginx未配置负载均衡,已拦截ip访问;
npm run chat:http
简单聊天室启动方式[running]
npm run server
建议使用启动方式(debounce防抖函数500ms测试)
npm run wechat
简单聊天室启动方式(debounce防抖函数400ms测试)
npm run start or npm start
koa框架启动方式,建议自行配置
预览地址 https://doso.jeeas.cn
node环境:
1、yum安装node会安装一个老版本;
2、建议使用 n 管理node版本(npm install -g n);
n 常用的命令有:
n 会列出所有安装的版本供你切换
n latest 安装最新版本
n stable 安装最新稳定版
n lts 安装最新长期支持版本
n rm [版本号] 删除某一版本
n -h 帮助命令
n [版本号] 安装指定版本node
Tips:
若n切换的版本未生效还需要手动配置一下;
a.查看系统node的安装路径: which node
b.通过N_PREFIX变量来修改 n 的默认node安装路径
.编辑环境配置文件: vim ~/.bash_profile
.添加配置语句:
export N_PREFIX=/usr/local/node (#node实际安装位置)
export PATH=$N_PREFIX/bin:$PATH
c.执行source使修改生效: source ~/.bash_profile
d.检查是否生效: echo $N_PREFIX
(亲测可用,转自:https://www.jianshu.com/p/d934d3ba67ec)
3、node项目可以使用pm2管理
4、在linux上使用screen挂起任务
遇到的坑:
koa:使用 nginx+node+koa+mysql+ejs 简单尝试,透传获取真实ip;
log4js:日志级别无法拆分(原因未知),未启用线程,都会打在info日志里;
koa-static:配置的静态资源无法访问(原因:配置问题),可使用koa-static-router代替;
koa-bodyparser:读取post数据中间件=>ctx.request.body;
http-proxy-middleware:在入口处可配置转发请求;
koa-views:使用模板引擎(ejs);
koa-router:配置路由,考虑动态方式,demo需要改进;
linux上 export port=3030 && node --trace-deprecation chat.js
windows上 set port=3030 && node --trace-deprecation chat.js
关于https
通过https访问才可以调用桌面通知Notification.requestPermission推送消息
阿里云免费SSL: https://common-buy.aliyun.com/?commodityCode=cas&aly_as=zI60LOb8#/buy
配置可以访问
nginx下配置socket.io
//解决ws连接问题 参考:https://www.cnblogs.com/qkstart/p/11246173.html
#80端口转443访问
upstream nodes {
ip_hash;
server localhost:3030;
}
server {
listen 80;
server_name doso.jeeas.cn;
rewrite ^(.*)$ https://$http_host$1 permanent;
}
server {
#listen 80;
listen 443 ssl;
server_name doso.jeeas.cn;
access_log logs/doso443.log;
#ssl on; #设置为on启用SSL功能。
ssl_certificate cert/doso.jeeas.cn.pem;
ssl_certificate_key cert/doso.jeeas.cn.key;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; #使用此加密套件。
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #使用该协议进行配置。
ssl_prefer_server_ciphers on;
location / {
proxy_pass http://nodes; #反向代理集群
proxy_buffering off; #此参数非常重要,必须禁用代理缓存.
proxy_set_header Host $host:$server_port;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
}
}