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

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

二、搭建Nodejs生产环境

1、下载

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

2、配置环境变量

(1).vi /etc/profile

(2).最后面添加:

bash 复制代码
export NODE_HOME=/usr/local/nodejs/bin
export PATH=$NODE_HOME:$PATH

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

bash 复制代码
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 的安装

bash 复制代码
npm install pm2 -g # 命令行安装 pm2

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

bash 复制代码
pm2 start app.js --name www_xxx_com
pm2 start app.js -i 3 --name www_xxx_com 3 启动 3 个进程 (自带负载均衡)

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

bash 复制代码
pm2 list

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

bash 复制代码
pm2 logs

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

bash 复制代码
pm2 logs www_xxx_com

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

bash 复制代码
pm2 stop all # 停止所有进程
pm2 restart all # 重启所有进程
pm2 reload all # 0 秒停机重载进程 (用于 NETWORKED 进程)

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

bash 复制代码
pm2 stop 0 # 停止指定的进程
pm2 restart 0 # 重启指定的进程
pm2 stop www_xxx_com
pm2 restart www_xxx_com

(8).杀死进程

bash 复制代码
pm2 delete 0 # 杀死指定的进程
pm2 delete all # 杀死全部进程
pm2 delete www_xxx_com # 杀死指定名字的进程

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

bash 复制代码
pm2 show www_xxx_com

三、相关防火墙配置

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

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

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

反向代理配置案例

找到nignx下对应的conf配置

bash 复制代码
server {
    listen 80; 
    server_name www.xxx.com;
    location / {
        #设置主机头和客户端真实地址,以便服务器获取客户端真实 IP
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        #禁用缓存
        proxy_buffering off;
        #反向代理的地址
        proxy_pass http://127.0.0.1:3001;
    }
}

然后配置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 然后在里面新建对应网站的配置文件

bash 复制代码
upstream xxx{
    ip_hash; 
    server 127.0.0.1:3001 weight=1; 
    server 127.0.0.1:3001 weight=3;
}

server {
    listen 80; 
    server_name www.xxx.com;
    location / {
        #设置主机头和客户端真实地址,以便服务器获取客户端真实 IP
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        #禁用缓存
        proxy_buffering off;
        #反向代理的地址
        proxy_pass http://xxx;
    }
}

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

相关推荐
_.Switch1 小时前
Python Web 应用中的 API 网关集成与优化
开发语言·前端·后端·python·架构·log4j
一路向前的月光1 小时前
Vue2中的监听和计算属性的区别
前端·javascript·vue.js
长路 ㅤ   1 小时前
vite学习教程06、vite.config.js配置
前端·vite配置·端口设置·本地开发
长路 ㅤ   1 小时前
vue-live2d看板娘集成方案设计使用教程
前端·javascript·vue.js·live2d
Fan_web1 小时前
jQuery——事件委托
开发语言·前端·javascript·css·jquery
安冬的码畜日常1 小时前
【CSS in Depth 2 精译_044】第七章 响应式设计概述
前端·css·css3·html5·响应式设计·响应式
韩楚风2 小时前
【linux 多进程并发】linux进程状态与生命周期各阶段转换,进程状态查看分析,助力高性能优化
linux·服务器·性能优化·架构·gnu
莹雨潇潇2 小时前
Docker 快速入门(Ubuntu版)
java·前端·docker·容器
陈苏同学2 小时前
4. 将pycharm本地项目同步到(Linux)服务器上——深度学习·科研实践·从0到1
linux·服务器·ide·人工智能·python·深度学习·pycharm
Jiaberrr2 小时前
Element UI教程:如何将Radio单选框的圆框改为方框
前端·javascript·vue.js·ui·elementui