1 nvm介绍

  • NVM(Node version manager)顾名思义,就是Node.js的版本管理软件,可以轻松的在Node.js各个版本间切换,项目源码在GitHub;
  1. #安装git客户端
  2. [root@node-v1 ~]# yum install git-core -y
  3. [root@node-v1 ~]# cd /usr/local/src/
  4. [root@node-v1 src]# git clone https://github.com/cnpm/nvm.git
  5. [root@node-v1 src]# cd nvm/
  6. [root@node-v1 nvm]# ./install.sh
  7. [root@node-v1 nvm]# source nvm.sh
  8. [root@node-v1 nvm]# nvm install 8
  9. ######################################################################## 100.0%
  10. WARNING: checksums are currently disabled for node.js v4.0 and later
  11. Now using node v8.9.4 (npm v5.6.0)
  12. [root@node-v1 bin]# echo "export PATH=/usr/local/src/nvm/versions/node/v8.9.4/bin:$PATH" >> /etc/profile 
  13. [root@node-v2 .nvm]# cat >>/etc/profile<<EOF
  14. > export NVM_DIR="/usr/local/src/nvm"
  15. > [ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"
  16. > EOF
  • 使用方法
  1. 列出所有可安装的版本nvm list-remote;  
  2. 安装相应的版本使用nvm install 8;还可以直接安装 各个版本;
  3. 查看一下你当前已经安装的版本:nvm ls;
  4. 切换版本;nvm use v0.12.4;
  5. 设置默认版本 nvm alias default v0.12.4
  6. 注意:具体操作很简单,使用帮助通过nvm help;

1.1 编写hello.js试验

  1. [root@node-v1 ~]# cat hello.js
  2. var http = require('http');
  3.  
  4. var server = http.createServer(function(req, res) {
  5. res.writeHead(200, {'Content-Type' : 'text/html'});
  6. res.write('<head><meta charset="utf-8"/></head>');
  7. res.end("Hello world node-v1");
  8. });
  9.  
  10. server.listen(3000, '10.0.0.7');

  • node-v2也是如此

1.2 安装forever让node永久运行

  1. [root@node-v1 ~]# npm install forever -g
  2. [root@node-v1 ~]# forever start hello.js
  3. [root@node-v1 ~]# forever stop hello.js

2 安装Haproxy

  1. [root@haproxy ~]# yum install -y haproxy
  2. [root@haproxy ~]# cp /etc/haproxy/haproxy.cfg{,.bak} 

2.1 Haproxy开启日志记录

  1. [root@haproxy ~]# mkdir /var/log/haproxy
  2. [root@haproxy ~]# chmod a+w /var/log/haproxy
  3. [root@haproxy ~]# egrep -v "#|^$" /etc/rsyslog.conf
  4. $ModLoad imudp
  5. $UDPServerRun 514
  6. $WorkDirectory /var/lib/rsyslog
  7. $ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
  8. $IncludeConfig /etc/rsyslog.d/*.conf
  9. $OmitLocalLogging on
  10. $IMJournalStateFile imjournal.state
  11. *.info;mail.none;authpriv.none;cron.none /var/log/messages
  12. authpriv.* /var/log/secure
  13. mail.* -/var/log/maillog
  14. cron.* /var/log/cron
  15. *.emerg :omusrmsg:*
  16. uucp,news.crit /var/log/spooler
  17. local7.* /var/log/boot.log

2.2 修改“/etc/sysconfig/rsyslog”文件,内容如下  

  1. [root@haproxy ~]# cat /etc/sysconfig/rsyslog
  2. # Options for rsyslogd
  3. # Syslogd options are deprecated since rsyslog v3.
  4. # If you want to use them, switch to compatibility mode 2 by "-c 2"
  5. # See rsyslogd(8) for more details
  6. SYSLOGD_OPTIONS="-r -m 0 -c 2"

2.3 修改Haproxy的配置文件如下:

  1. [root@haproxy ~]# cat /etc/haproxy/haproxy.cfg
  2. global
  3. log 127.0.0.1 local0 info #定义全局syslog服务,127.0.0.1表示将日志发送到本地保存
  4. chroot /var/lib/haproxy
  5. pidfile /var/run/haproxy.pid
  6. maxconn 25600 #最大连接数
  7. user haproxy #用户名
  8. group haproxy #组
  9. daemon #以守护进程方式运行
  10. stats socket /var/lib/haproxy/stats # turn on stats unix socket
  11.  
  12. defaults #为frontend和backend提供默认参数
  13. mode http #模式
  14. log global #日志
  15. option httplog #详细记录http日志
  16. option dontlognull #不记录健康检查的日志信息
  17. retries 3 #3次连接失败则认为服务不可用
  18. option redispatch #ServerID对应的服务器宕机后,强制定向到其他运行正常的服务器
  19. maxconn 30000 #默认的最大连接数
  20. contimeout 5000 #连接超时
  21. clitimeout 5000 #客户端超时
  22. srvtimeout 5000 #服务器超时
  23. timeout check 1s #心跳检测超时
  24. timeout http-request 10s #默认http请求超时时间
  25. timeout queue 1m #默认队列超时时间
  26. timeout connect 10s #默认连接超时时间
  27. timeout client 1m #默认客户端超时时间
  28. timeout server 1m #默认服务器超时时间
  29. timeout http-keep-alive 10s #默认持久连接超时时间
  30.  
  31. listen stats
  32. mode http
  33. bind 0.0.0.0:8090 #指定IP地址与Port
  34. stats enable #开启Haproxy统计状态
  35. stats refresh 3s #统计页面自动刷新时间间隔
  36. stats hide-version #状态页面不显示版本号
  37. stats uri /haproxyadmin?stats #统计页面的uri为"/haproxyadmin?stats"
  38. stats realm Haproxy\ Statistics #统计页面认证时提示内容信息
  39. stats auth admin:admin #统计页面的用户名与密码
  40. stats admin if TRUE #启用或禁用状态页面
  41.  
  42. frontend node #定义前端服务器
  43. bind *:80
  44. mode http
  45. option httpclose #每次请求完成主动关闭http连接
  46. option forwardfor #后端服务器获取客户端的IP地址,可以从http header中获取
  47. acl url_static path_end -i .html .jpg .gif #定义ACL规则以如".html"结尾的文件;-i:忽略大小写
  48. acl url_dynamic path_end -i .php
  49. default_backend node-web #客户端访问时默认调用后端服务器地址池
  50. backend node-web #定义后端服务器
  51. balance roundrobin #定义算法;基于权重进行轮询
  52. server node1 10.0.0.7:3000 check rise 2 fall 1 weight 2
  53. server node2 10.0.0.8:3000 check rise 2 fall 1 weight 2
  • 访问

  

3 配置 Haproxy+ssl

3.1 Haproxy配置http跳转https

  1. [root@haproxy_v1 haproxy]# cat haproxy.cfg
  2. global
  3. log 127.0.0.1 local0 info #定义全局syslog服务,127.0.0.1表示将日志发送到本地保存
  4. chroot /var/lib/haproxy
  5. pidfile /var/run/haproxy.pid
  6. maxconn 25600 #最大连接数
  7. user haproxy #用户名
  8. group haproxy #组
  9. daemon #以守护进程方式运行
  10. tune.ssl.default-dh-param 2048
  11. stats socket /var/lib/haproxy/stats # turn on stats unix socket
  12.  
  13. defaults #为frontend和backend提供默认参数
  14. mode http #模式
  15. log global #日志
  16. option httplog #详细记录http日志
  17. option dontlognull #不记录健康检查的日志信息
  18. retries 3 #3次连接失败则认为服务不可用
  19. option redispatch #ServerID对应的服务器宕机后,强制定向到其他运行正常的服务器
  20. maxconn 30000 #默认的最大连接数
  21. #contimeout 5000 #连接超时
  22. #clitimeout 5000 #客户端超时
  23. #srvtimeout 5000 #服务器超时
  24. timeout check 1s #心跳检测超时
  25. timeout http-request 10s #默认http请求超时时间
  26. timeout queue 1m #默认队列超时时间
  27. timeout connect 10s #默认连接超时时间
  28. timeout client 1m #默认客户端超时时间
  29. timeout server 1m #默认服务器超时时间
  30. timeout http-keep-alive 10s #默认持久连接超时时间
  31.  
  32. listen stats
  33. mode http
  34. bind 0.0.0.0:8090 #指定IP地址与Port
  35. stats enable #开启Haproxy统计状态
  36. stats refresh 3s #统计页面自动刷新时间间隔
  37. stats hide-version #状态页面不显示版本号
  38. stats uri /haproxyadmin?stats #统计页面的uri为"/haproxyadmin?stats"
  39. stats realm Haproxy\ Statistics #统计页面认证时提示内容信息
  40. stats auth admin:admin #统计页面的用户名与密码
  41. stats admin if TRUE #启用或禁用状态页面
  42.  
  43. frontend node #定义前端服务器
  44. bind *:80
  45. acl is_http hdr_beg(host) 10.0.0.60
  46. redirect scheme https if ! { ssl_fc }
  47. bind *:443 ssl crt /etc/haproxy/xiao.pem
  48. use_backend node-web if is_http
  49.  
  50. backend node-web #定义后端服务器
  51. balance roundrobin #定义算法;基于权重进行轮询
  52. server node1 10.0.0.7:3000 check rise 2 fall 1 weight 2
  53. server node2 10.0.0.8:3000 check rise 2 fall 1 weight 2
  • 证书的处理,需要将网站的根证书和key简单的合并在一起: 

  1. [root@haproxy_v1 haproxy]# pwd
  2. /etc/haproxy
  3. [root@haproxy_v1 haproxy]# ll
  4. total 16
  5. -rw-r--r-- 1 root root 3165 Jan 6 00:00 haproxy.cfg
  6. -rw-r--r-- 1 root root 3142 Jan 5 00:11 haproxy.cfg.bak
  7. -rw-r--r-- 1 root root 1675 Jan 17 2018 privatekey.pem
  8. -rw-r--r-- 1 root root 1184 Jan 17 2018 server.pem
  9. [root@haproxy_v1 haproxy]# cat server.pem privatekey.pem |tee xiao.pem

 访问10.0.0.60跳转到https://10.0.0.60

Haproxy+ssl+nvm+forever的更多相关文章

  1. Haproxy ssl 配置方式

    通过haproxy redirect请求重定向的方法实现HTTP跳转HTTPS 配置实现http跳转到https,采用redirect重定向的做法,只需在frontend端添加: frontend h ...

  2. haproxy ssl相关配置

    ssl-default-bind-options [<option>]... This setting is only available when support for OpenSSL ...

  3. haproxy反向代理环境部署(http和https代理)

    操作背景:前方有一台haproxy代理机器(115.100.120.57/192.168.1.7),后方两台realserver机器(192.168.1.150.192.168.1.151,没有公网i ...

  4. 负载均衡服务之HAProxy https配置、四层负载均衡以及访问控制

    前文我们聊了下haproxy的访问控制ACL的配置,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/12817773.html:今天我们来聊一聊haproxy的h ...

  5. haproxy 2.2代理后端https服务

    globalmaxconn 100000chroot /usr/local/haproxystats socket /var/lib/haproxy/haproxy.sock mode 600 lev ...

  6. HAProxy配置SSL

    前沿 据悉苹果强制APP在2016年底使用ATS协议,所以公司准备将部分站点http统一替换成https.所有我们就得测试下 1.首先原有的haproxy1.5升级到了1.7版本支持ssl 2.查看相 ...

  7. 配置Nginx支持SSL SNI(一个IP绑定多个证书) 以及Haproxy实现多域名证书

    概述 传统的每个SSL证书签发,每个证书都需要独立ip,假如你编译openssl和nginx时候开启TLS SNI (Server Name Identification) 支持,这样你可以安装多个S ...

  8. haproxy 关闭ssl 3.0 加密

    global log 127.0.0.1 local3 maxconn 65535 chroot /usr/local/haproxy uid 500 gid 500 daemon ssl-defau ...

  9. haproxy配置基于ssl证书的https负载均衡

    本实验全部在haproxy1.5.19版本进行测试通过,经过测试1.7.X及haproxy1.3版本以下haproxy配置参数可能不适用,需要注意版本号. 一.业务要求现在根据业务的实际需要,有以下几 ...

随机推荐

  1. "New page after" by code

    Hi. There is a method for starting of the new page in the EngineV2: Engine.NewPage(); You can call i ...

  2. 面试题40:最小(大)的K个数

    剑指offer40题,同时这也是面试高发题目 2019.4 蚂蚁金服问道:求1000万个数据中的前K个数. 思路: 1.直接上排序算法,然后我们就取排好顺序的前K个即可.但是单考虑快排,时间复杂度也要 ...

  3. (转)关于SimpleDateFormat安全的时间格式化线程安全问题

    想必大家对SimpleDateFormat并不陌生.SimpleDateFormat 是 Java 中一个非常常用的类,该类用来对日期字符串进行解析和格式化输出,但如果使用不小心会导致非常微妙和难以调 ...

  4. HTML图片

    HTML图片 html图片 <img>标签可以在网页上插入一张图片,它是独立使用的标签,通过“src”属性定义图片的地址,通过“alt”属性定义图片加载失败时显示的文字,以及对搜索引擎和盲 ...

  5. void*和void类型

    |   版权声明:本文为博主原创文章,未经博主允许不得转载. void的类型是无类型的数据,void*表示无类型的指针.其中void*可以指向任何数据类型的指针. void类型的用法: (1).voi ...

  6. Linux下实现客户端和服务器端的通信

    首先,可以将代码复制下来放到U盘里,然后挂载到Linux上 挂载步骤 找到设备->USB->你U盘的名字 挂载成功 访问U盘把代码拷贝到home文件夹下,就可以直接进行编译. client ...

  7. 好用的打包工具webpack

    <什么是webpack> webpack是一个模块打包器,任何静态资源(js.css.图片等)都可以视作模块,然后模块之间也可以相互依赖,通过webpack对模块进行处理后,可以打包成我们 ...

  8. elasticsearch 分析器 分词器

    参考:https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-tokenizers.html 在全文搜索(Fu ...

  9. 2019HDU多校第一场 String 贪心

    题意:给你一个字符串,问是否存在一个长度为m的子序列,子序列中对应字符的数目必须在一个范围内,问是否存在这样的字符串?如果存在,输出字典序最小的那个. 思路:贪心,先构造一个序列自动机,序列自动机指向 ...

  10. 力扣——single number 2(只出现一次的数字 2) python实现

    题目描述: 中文: 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现了三次.找出那个只出现了一次的元素. 说明: 你的算法应该具有线性时间复杂度. 你可以不使用额外空间来实现吗? ...