• nginx+nodejs 一台服务器站架多个网站


    一、一台服务器架设多个 nodejs 网站的拓扑结构

    二、搭建 Nodejs 生产环境

    1、下载

    下载 nodejs 二进制代码包或者,然后减压到 /usr/local/nodejs

    2、配置环境变量

    (1).vi /etc/profile

    (2).最后面添加:

    1. export NODE_HOME=/usr/local/nodejs/bin
    2. export PATH=$NODE_HOME:$PATH

    (3).:wq 保存,然后运行

    source /etc/profile

    三、nodejs 进程管理器 pm2 的使用

    PM2 是一款非常优秀的 Node 进程管理工具,它有着 丰富的特性 能够充分利用多核CPU 能够负载均衡 、能够帮助应用在崩溃后、指定时间(cluster model) 和超出最大内存限制等情况下实现 自动重启 , PM2是开源的基于Nodejs 的进程管理器,包括 守护进程 监控 ,日志的一整套完整的功能

    1.PM2 的主要特性

    (1).内建负载均衡(使用 Node cluster 集群模块)
    (2).后台运行
    (3).0 秒停机重载,大概意思是 维护升级的时候不需要停机
    (4).具有 Ubuntu CentOS 的启动脚本
    (5).停止不稳定的进程(避免无限循环)
    (6).控制台检测

    2.PM2 的常见命令

    (1).pm2 的安装

    npm install pm2 -g # 命令行安装 pm2

     (2).运行pm2的程序并指定name

    1. pm2 start app.js --name www_xxx_com
    2. pm2 start app.js -i 3 --name www_xxx_com 3 启动 3 个进程 (自带负载均衡)

     (3).显示所有进程状态

    pm2 list

    (4).显示所有进程日志

    pm2 logs

    (5).显示一个进程的日志

    pm2 logs www_xxx_com

    (6).关闭重启所有进程

    1. pm2 stop all # 停止所有进程
    2. pm2 restart all # 重启所有进程
    3. pm2 reload all # 0 秒停机重载进程 (用于 NETWORKED 进程)

    (7).关闭重启指定进程

    1. pm2 stop 0 # 停止指定的进程
    2. pm2 restart 0 # 重启指定的进程
    3. pm2 stop www_xxx_com
    4. pm2 restart www_xxx_com

    (8).杀死进程

    1. pm2 delete 0 # 杀死指定的进程
    2. pm2 delete all # 杀死全部进程
    3. pm2 delete www_xxx_com # 杀死指定名字的进程

    (9).显示相应进程/应用的总体信息

    pm2 show www_xxx_com

    三、相关防火墙配置

    【精选】CentOS8防火墙相关命令

     四Nginx 反向代理,负载均衡配置

    nginx配置详解-CSDN博客,为什么要用到Nginx来做负载均衡?为什么要做动静分离?,Nginx 反向代理与负载均衡详解

    反向代理配置案例

    找到nignx下对应的conf配置

    1. server {
    2. listen 80;
    3. server_name www.xxx.com;
    4. location / {
    5. #设置主机头和客户端真实地址,以便服务器获取客户端真实 IP
    6. proxy_set_header Host $host;
    7. proxy_set_header X-Real-IP $remote_addr;
    8. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    9. #禁用缓存
    10. proxy_buffering off;
    11. #反向代理的地址
    12. proxy_pass http://127.0.0.1:3001;
    13. }
    14. }

    然后配置hosts:

            192.168.1.111 www.xxx.com  #自己的ip

    然后浏览器输入www.xxx.com, 就会通过nginx转发到127.0.0.1:3001,这就是反向代理操作

    Nginx 负载均衡

    1.准备工作

    (1).关闭 Selinux
    (2).开启防火墙对应端口 

    2.负载均衡的种类

    (1).一种是通过硬件来进行解决,常见的硬件有 NetScaler F5 Radware Array 等商用的负载均衡器,但是它们是比较昂贵的
    (2).一种是通过软件来进行解决的,常见的软件有 LVS Nginx apache , 它们是基于 Linux系统并且开源的负载均衡策略
    Nginx 的特点 是占有内存少,并发能力强,事实上 nginx 的并发能力确实在同类型的网页服务器中表现最好

    3.nginxupstream目前支持3种方式的分配 

    (1).轮询(默认)
    每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器 down 掉, 能自动剔除
    (2).weight权重:you can you up
    指定轮询几率, weight 和访问比率成正比,用于后端服务器性能不均的情况
    (3).ip_hash:ip哈希算法
    每个请求按访问 ip hash 结果分配,这样每个访客固定访问一个后端服务器, 可以解决 session 的问题

    4.配置负载均衡 

    找到 /etc/nginx/conf.d 然后在里面新建对应网站的配置文件
    1. upstream xxx{
    2. ip_hash;
    3. server 127.0.0.1:3001 weight=1;
    4. server 127.0.0.1:3001 weight=3;
    5. }
    6. server {
    7. listen 80;
    8. server_name www.xxx.com;
    9. location / {
    10. #设置主机头和客户端真实地址,以便服务器获取客户端真实 IP
    11. proxy_set_header Host $host;
    12. proxy_set_header X-Real-IP $remote_addr;
    13. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    14. #禁用缓存
    15. proxy_buffering off;
    16. #反向代理的地址
    17. proxy_pass http://xxx;
    18. }
    19. }

     然后重启nignx就可以了

    好了,在nginx中使用nodejs 以及搭建一台服务器站架多个网站就完成了

  • 相关阅读:
    EPLAN_002#常用功能(二)
    宝塔Nginx配置反向代理后如何配置跨域?
    C++模板元模板实战书籍讲解第一章题目讲解
    python:Möller–Trumbore射线三角面相交算法
    Github 2024-03-12开源项目日报 Top10
    Autosar MCAL-ADC详解(一)-基于Tc27x的cfg软件
    OPPOWatch3什么时候发布 OPPOWatch3配置如何
    【云原生 | Kubernetes 系列】---Prometheus监控mysql
    加满油箱问题
    Linux系统编程系列之进程间通信-共享内存
  • 原文地址:https://blog.csdn.net/zhoupenghui168/article/details/133825364