Nignx安装负载均衡动静分离以及Linux前端项目部署将域名映射到特定IP地址

目录

一、nginx简介

1.1 定义

1.2 背景

1.3 作用

二、nginx搭载负载均衡提供前后分离后台接口数据

2.1 nginx安装

2.1.1 下载依赖

2.1.2 下载并解压安装包

2.1.3 安装nginx

2.1.4 启动nginx服务

2.2 tomcat负载均衡

2.2.1 负载均衡所需服务器准备

2.2.2 配置修改

2.2.3 重启nginx

2.2.4 效果展示

2.3 后端项目不同端口访问

三、前端项目打包

3.1 导包前测试及准备

3.2 前端项目打包处理

四、前端项目Linux部署

4.1 创建文件夹以存放前端项目解压包

4.2 将前端项目拷贝到对应文件夹

4.3 解压前端项目包以及配置项目动静态资源

4.3.1 下载onzip命令

4.3.2 用onzip命令解压前端项目压缩包

4.3.3 前端项目资源配置​编辑

(1)静态资源配置

(2)动态资源配置

4.4 重启nginx服务

4.5 将域名映射到特定IP地址


一、nginx简介

1.1 定义

Nginx是一个高性能的开源Web服务器和反向代理服务器。它具有轻量级、高并发、低内存消耗的特点,被广泛用于构建高性能的Web应用和服务。

Nginx最初是由俄罗斯的工程师Igor Sysoev开发的,于2004年首次发布。它的设计目标是解决C10k问题,即同时处理上万个并发连接的问题。相比传统的Web服务器(如Apache),Nginx采用了事件驱动和异步非阻塞的处理方式,能够更高效地处理大量的并发请求。

1.2 背景

Nginx的背景可以追溯到2002年,当时俄罗斯的工程师Igor Sysoev开始开发这个项目。他当时是一家俄罗斯的在线广告公司的系统管理员,面临着处理大量并发连接的问题。他发现传统的Web服务器(如Apache)在处理大量并发连接时性能下降严重,无法满足需求。

为了解决这个问题,Sysoev开始着手开发一款高性能的Web服务器。他采用了事件驱动和异步非阻塞的处理方式,以及采用单线程模型来处理并发请求。这种设计使得Nginx能够高效地处理大量的并发连接,而无需为每个连接创建一个新的线程或进程。

在2004年,Nginx首次发布,并迅速获得了广泛的关注和使用。它的高性能、低内存消耗以及简单的配置语法使得它成为了很多网站和应用的首选。随着互联网的快速发展,Nginx逐渐成为了最受欢迎的Web服务器之一。

Nginx的成功也得益于其开源的特性,使得开发者可以自由地使用、修改和分发它。这促进了Nginx的快速发展和持续改进。如今,Nginx已经成为了全球最流行的Web服务器之一,被广泛应用于各种规模的网站、应用和服务中。

1.3 作用

Nginx的主要功能包括:

  1. 静态文件服务:Nginx可以快速地处理静态文件的请求,通过将文件缓存到内存中,减少了对磁盘的访问,提高了响应速度。
  2. 反向代理:Nginx可以作为反向代理服务器,将客户端的请求转发给后端的多个服务器,实现负载均衡和高可用性。
  3. 动态内容处理:Nginx支持通过FastCGI、uWSGI和SCGI等协议与后端应用服务器(如PHP、Python、Java)进行通信,实现动态内容的处理和渲染。
  4. SSL/TLS加密:Nginx支持SSL/TLS协议,可以提供安全的HTTPS连接,保护数据的传输过程。
  5. 缓存:Nginx可以使用内置的缓存模块,将经常访问的内容缓存到内存中,减少对后端服务器的请求,提高性能。
  6. URL重写和重定向:Nginx提供了强大的URL重写和重定向功能,可以根据规则修改URL,实现URL的美化和重定向。
  7. 日志记录:Nginx可以记录访问日志和错误日志,方便进行故障排查和性能分析。

总之,Nginx是一个高性能、可扩展、灵活的Web服务器和反向代理服务器,适用于构建高性能的Web应用和服务。它的简单配置和高效处理能力使得它成为了很多大型网站和应用的首选。

二、nginx搭载负载均衡提供前后分离后台接口数据

2.1 nginx安装

需要用到的指令:

1)一键安装4个依赖
yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel
2)下载并解压安装包
wget http://nginx.org/download/nginx-1.13.7.tar.gz
tar -xvf nginx-1.13.7.tar.gz

3)安装nginx
# 进入安装包目录
cd nginx-1.13.7
# 编译,执行配置: 考虑到后续安装ssl证书 添加两个模块
./configure --with-http_stub_status_module --with-http_ssl_module
# 安装
make && make install

4)启动 nginx 服务
安装好的 nginx 服务在 /usr/local/nginx 下:

进入 /usr/local/nginx/sbin 目录下启动:
# 启动
./nginx

# 重启
./nginx -s reload

# 关闭
./nginx -s stop

# 或者,指定配置文件启动
./nginx -c /usr/local/nginx/conf/nginx.conf

#设置防火墙开放 80 端口
 firewall-cmd --zone=public --add-port=80/tcp --permanent
 firewall-cmd --reload && firewall-cmd --list-port

其它:
yum install lsof
lsof -i:80
kill -9 pid

2.1.1 下载依赖

一键安装4个依赖:
yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel

具体操作如下:

下载依赖完成!如下:

2.1.2 下载并解压安装包

命令如下:

下载、解压安装包
wget http://nginx.org/download/nginx-1.13.7.tar.gz
tar -xvf nginx-1.13.7.tar.gz

因为博主在之前就已经拷贝了nginx的安装包了,所以这里只需把安装包进行解压即可,具体操作如下:

输入指令查看是否解压成功:

2.1.3 安装nginx

命令如下:

进入安装包目录
cd nginx-1.13.7
编译,执行配置: 考虑到后续安装ssl证书 添加两个模块
./configure --with-http_stub_status_module --with-http_ssl_module
安装
make && make install

在解压好安装包之后,我们需要进入安装包目录给它进行安装设置,具体操作如下:

进入安装包目录:

编译,执行配置:考虑到后续安装ssl证书 添加两个模块:

安装:

2.1.4 启动nginx服务

注:安装好的 nginx 服务在 /usr/local/nginx 下

 进入 /usr/local/nginx/sbin 目录下启动,具体步骤如下:

启动后输入指令lsof,测试启动是否成功,如下:

没有lsof命令,下载即可,如下:

下载好命令后,继续测试nginx是否启动成功,如下:

但是此时我们的防火墙并没有开放80端口,无疑nginx外部肯定不能进行访问,执行指令可以看到80端口并未开放,只有上篇博客开放过的8080与3306,如下:

此时,我们需要对80端口进行开放,才可以在外部访问nginx,如下:

然后再进行外部访问测试,效果如下:

2.2 tomcat负载均衡

图解:

2.2.1 负载均衡所需服务器准备

所需指令:

#准备2个tomcat
cp -r apache-tomcat-8.5.20/ apache-tomcat-8.5.20_8081/

为了演示负载均衡,必须有三台服务器,我们已经有了一个nginx反向代理服务器,还需要准备两个tomcat服务器,具体操作如下:

首先开放8081端口,避免端口冲突,如下:

(注:前面所导入的项目尽量清空后再进行拷贝,排除tomcat启动过慢的问题)

开放成功后,进行拷贝,如下:

拷贝后我们必须进入文件去修改端口号,因为现在启动的还不是8081端口,具体操作如下:

进入apach tomcat文件夹中的conf文件后,编辑server.xml文件,进行端口修改:

修改端口号:

修改完后保存退出。然后分别启动8081与8080tomcat服务器,如下:

外部访问这两个端口服务器效果如下:

8080:

8081:

结合前面的反向代理服务器,三台服务器已经准备就绪。

2.2.2 配置修改

服务器准备好后,重新回到/usr/local/nginx/conf 目录下,

往nginx.conf里面加入服务器集群配置信息,如下:

添加反向代理: 

nginx.conf内部代码如下:


#user  nobody;
worker_processes  1;#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;#pid        logs/nginx.pid;events {worker_connections  1024;
}http {include       mime.types;default_type  application/octet-stream;#log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '#                  '$status $body_bytes_sent "$http_referer" '#                  '"$http_user_agent" "$http_x_forwarded_for"';#access_log  logs/access.log  main;sendfile        on;#tcp_nopush     on;#keepalive_timeout  0;keepalive_timeout  65;#gzip  on;#服务器的集群upstream  tomcat_list {  #服务器集群名字server    127.0.0.1:8080  weight=1;   #服务器1   weight是权重的意思,权重越大,分配的概率越大。server    127.0.0.1:8081  weight=3; #服务器2   weight是权重的意思,权重越大,分配的概率越大} server {listen       80;server_name  localhost;#charset koi8-r;#access_log  logs/host.access.log  main;location / {#root   html;proxy_pass   http://tomcat_list;index  index.html index.htm;}#error_page  404              /404.html;# redirect server error pages to the static page /50x.html#error_page   500 502 503 504  /50x.html;location = /50x.html {root   html;}# proxy the PHP scripts to Apache listening on 127.0.0.1:80##location ~ \.php$ {#    proxy_pass   http://127.0.0.1;#}# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000##location ~ \.php$ {#    root           html;#    fastcgi_pass   127.0.0.1:9000;#    fastcgi_index  index.php;#    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;#    include        fastcgi_params;#}# deny access to .htaccess files, if Apache's document root# concurs with nginx's one##location ~ /\.ht {#    deny  all;#}}# another virtual host using mix of IP-, name-, and port-based configuration##server {#    listen       8000;#    listen       somename:8080;#    server_name  somename  alias  another.alias;#    location / {#        root   html;#        index  index.html index.htm;#    }#}# HTTPS server##server {#    listen       443 ssl;#    server_name  localhost;#    ssl_certificate      cert.pem;#    ssl_certificate_key  cert.key;#    ssl_session_cache    shared:SSL:1m;#    ssl_session_timeout  5m;#    ssl_ciphers  HIGH:!aNULL:!MD5;#    ssl_prefer_server_ciphers  on;#    location / {#        root   html;#        index  index.html index.htm;#    }#}}

2.2.3 重启nginx

添加代理保存后,重新返回sbin目录进行nginx重启具体操作如下:

2.2.4 效果展示

页面访问效果展示:

服务器集群权重效果展示:

最后关闭8080端口的tomcat,操作如下:

看看效果,如下:

可以看到关闭8080端口的tomcat后,原本8080端口域名只能访问8081端口的页面了。这就是tomcat负载均衡。

2.3 后端项目不同端口访问

8080端口效果如下:

8081端口效果如下:

三、前端项目打包

3.1 导包前测试及准备

项目功能检测:

在config/index.js中build代码块下:新增代码,如下:

assetsPublicPath: './',

具体操作如下:

注:必须添加,否则打包出现白屏问题。

在build/utils.js中if代码块下:新增代码如下:

//解决jcon路径加载错误publicPath:'../../'

具体操作如下:

3.2 前端项目打包处理

添加完打包必须的代码处理后,前往spa目录下输入cmd开始打包,具体步骤如下:

输入指令并开始打包:

打包完成: 

并且dist文件夹中会有前端项目的静态加载页面,如下: 

到此前端项目打包完成。

四、前端项目Linux部署

4.1 创建文件夹以存放前端项目解压包

具体操作如下:

4.2 将前端项目拷贝到对应文件夹

具体操作如下:

4.3 解压前端项目包以及配置项目动静态资源

4.3.1 下载onzip命令

yum install -y unzip

因为前端项目压缩包后缀是zip,需要用到onzip命令去解压,所以我们在解压前需要下载onzip命令,具体操作如下:

4.3.2 用onzip命令解压前端项目压缩包

unzip blog.zip

用刚刚下载好的unzip命令,解压前端项目包,具体操作如下:

4.3.3 前端项目资源配置

(1)静态资源配置

具体操作如下:

(2)动态资源配置

具体操作如下:

在静态资源下部配置动态资源:

^~/api/表示匹配前缀是api的请求,proxy_pass的结尾有/, 则会把/api/*后面的路径直接拼接到后面,即移除api。

 配置完成后保存即可。

4.4 重启nginx服务

重新回到/usr/local/nginx/sbin/下执行重启指令进行nginx重启服务,具体操作如下:

重启nginx服务之后,效果如下:

4.5 将域名映射到特定IP地址

具体操作如下:

win11主页搜索命令提示符并右键点击管理员运行,如下:

在命令提示符中,键入编辑命令

notepad c:\windows\system32\drivers\etc\hosts

来以管理员权限打开host文件。如下:

打开后,在下方输入虚拟机域名与特定IP地址,如下:

输入完成之后保存即可。

注:编辑hosts文件时,是以txt文件形式进行编辑的。保存也是以txt文件形式进行保存。将hosts.txt文件保存后,点击查看里面的内容,确认无误。如果无误,可以将原来hosts本地计算机文件删除,然后将刚刚保存的带有后缀名.txt的文件重命名,将.txt后缀名删除即可。计算机会自动转成hosts。

最后,用www.Kissship.com特定IP地址访问的效果如下:


最后Nignx安装&负载均衡&动静分离以及Linux前端项目部署&将域名映射到特定IP地址就到这里,祝大家在敲代码的路上一路通畅!

感谢大家的观看 !

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/180733.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2022年12月 Python(三级)真题解析#中国电子学会#全国青少年软件编程等级考试

Python等级考试(1~6级)全部真题・点这里 一、单选题(共25题,每题2分,共50分) 第1题 列表L1中全是整数,小明想将其中所有奇数都增加1,偶数不变,于是编写了如下图所示的代…

驱动开发11-2 编写SPI驱动程序-点亮数码管

驱动程序 #include <linux/init.h> #include <linux/module.h> #include <linux/spi/spi.h>int m74hc595_probe(struct spi_device *spi) {printk("%s:%d\n",__FILE__,__LINE__);char buf[]{0XF,0X6D};spi_write(spi,buf,sizeof(buf));return 0; …

阿里云推出AI编程工具“通义灵码“;生成式 AI 入门教程 2

&#x1f989; AI新闻 &#x1f680; 阿里云推出AI编程工具"通义灵码"&#xff0c;支持多种语言及实时续写功能 摘要&#xff1a;阿里云推出了一款名为"通义灵码"的AI编程工具&#xff0c;支持多种主流编程语言&#xff0c;包括Java、Python、Go等。该工…

Redis Sentinel 哨兵模式

Sentinel 哨兵模式 Redis Sentinel 官网 Redis 的 Sentinel 文档 -- Redis中国用户组&#xff08;CRUG&#xff09; Sentinel Redis 命令参考&#xff08;红色&#xff09; Sentinel 通过监控的方式获取主机的工作状态是否正常&#xff0c;当主机发生故障时&#xff0c; Senti…

十年JAVA搬砖路——Linux搭建Ldap服务器。

1.安装命令 yum -y install openldap compat-openldap openldap-clients openldap-servers openldap-servers-sql openldap-devel2.启动ldap systemctl start slapd systemctl enable slapd3.修改密码 slappasswd Aa123456获得返回的密码加密密码串&#xff1a; {SSHA}DkSw0…

RPC 原理详解

文章目录 什么是 RPCRPC 基本原理RPC核心功能服务寻址数据编解码网络传输一次RPC的调用过程 实践基于HTTP协议的RPC基于TCP协议的RPC 什么是 RPC RPC&#xff08;Remote Procedure Call&#xff09;&#xff0c;即远程过程调用&#xff0c;它允许像调用本地服务一样调用远程服…

Python基础入门例程37-NP37 不低于与不超过(运算符)

最近的博文&#xff1a; Python基础入门例程36-NP36 谁的数字大&#xff08;运算符&#xff09;-CSDN博客 Python基础入门例程35-NP35 朋友的年龄是否相等&#xff08;运算符&#xff09;-CSDN博客 Python基础入门例程34-NP34 除法与取模运算&#xff08;运算符&#xff09;…

07.Diffusion Model概述

文章目录 Diffusion Model原理Reverse ProcessDenoise模块Forward Process(Diffusion Process) 文字生成图片by Diffusion Model文字生成图像的常见套路Text EncoderFrchet Inception DistanceContrastive Language-Image Pre-Training(CLIP) DecoderGeneration Model 部分截图…

Fourier分析导论——第3章——Fourier级数的收敛性(E.M. Stein R. Shakarchi)

第 3 章 Fourier级数的收敛性(Convergence of Fourier Series) The sine and cosine series, by which one can represent an arbitrary function in a given interval, enjoy among other remarkable properties that of being convergent. This property did not escape…

【Midjourney入门教程1】Midjourney的注册、订阅

文章目录 前言一、Midjourney是什么二、Midjourney注册三、新建自己的服务器四、开通订阅 前言 AI绘画即指人工智能绘画&#xff0c;是一种计算机生成绘画的方式。是AIGC应用领域内的一大分支。 AI绘画主要分为两个部分&#xff0c;一个是对图像的分析与判断&#xff0c;即“…

行业观察:数字化企业需要什么样的数据中心

伴随着数字经济在中国乃至全球的高速发展&#xff0c;数字化转型已经成为广大企业的必经之路。而作为数字经济的核心基础设施&#xff0c;数据中心充当了接收、处理、存储与转发数据流的“中枢大脑”&#xff0c;对驱动数字经济发展和企业数字化转型起到了极为关键的重要作用。…

路由器基础(十一):ACL 配置

访问控制列表 (Access Control List,ACL) 是目前使用最多的访问控制实现技术。访问控制列表是路由器接口的指令列表&#xff0c;用来控制端口进出的数据包。ACL适用于所有的被路由协议&#xff0c;如IP、IPX、AppleTalk 等。访问控制列表可以分为基本访问控制列表和高级访问控制…

第10章_创建和管理表

文章目录 1 基础知识1.1 一条数据存储的过程1.2 标识符命名规则1.3 MySQL中的数据类型 2 创建和管理数据库2.1 创建数据库2.2 使用数据库2.3 修改数据库2.4 删除数据库代码演示 3 创建表3.1 创建方式13.2 创建方式23.3 查看数据表结构代码演示 4 修改表4.1 追加一个列4.2 修改一…

shell学习脚本05(小滴课堂)

可以对海量的数据进行提取。 -v对提取的内容进行取反。 -n显示出行号。 -w精确匹配&#xff1a; -i:忽略大小写&#xff1a; -E正则匹配&#xff1a; cut命令&#xff1a; -d指定分隔符&#xff0c;-f指定截取区域&#xff1a; 截取第一列到第三列&#xff1a; 截取第二列到最…

在Python中添加Selenium Web Driver等待

本文将介绍在Python中在Selenium Web驱动程序中添加等待的示例。 Python Selenium Web 驱动程序等待 大多数 Web 应用程序都使用 AJAX 技术。 因此&#xff0c;网页上存在的不同元素需要不同的时间间隔才能完全上传&#xff0c;因为硒在网页上存在之前无法找到任何文本。 我们…

系列六、Mybatis的一级缓存

一、概述 Mybatis一级缓存的作用域是同一个SqlSession&#xff0c;在同一个SqlSession中执行两次相同的查询&#xff0c;第一次执行完毕后&#xff0c;Mybatis会将查询到的数据缓存起来&#xff08;缓存到内存中&#xff09;&#xff0c; 第二次执行相同的查询时&#xff0c;会…

【ML】分类问题

分类问题 classification&#xff1a;根据已知样本特征&#xff0c;判断输入样本属于哪种已知样本类。 常用入门案例&#xff1a;垃圾邮件检测、图像分类、手写数字识别、考试通过预测。 分类问题和回归问题的明显区别&#xff1a; 分类问题的结果是非连续型标签&#xff0c…

【算法|二分查找No.1】leetcode 704. 二分查找+二分模板 leetcode 34. 在排序数组中查找元素的第一个和最后一个位置

个人主页&#xff1a;兜里有颗棉花糖 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 兜里有颗棉花糖 原创 收录于专栏【手撕算法系列专栏】【LeetCode】 &#x1f354;本专栏旨在提高自己算法能力的同时&#xff0c;记录一下自己的学习过程&#xff0c;希望…

C/C++ static关键字详解(最全解析,static是什么,static如何使用,static的常考面试题)

目录 一、前言 二、static关键字是什么&#xff1f; 三、static关键字修饰的对象是什么&#xff1f; 四、C 语言中的 static &#x1f34e;static的C用法 &#x1f349;static的重点概念 &#x1f350;static修饰局部变量 &#x1f4a6;static在修饰局部变量和函数的作用 &a…

【k8s】pod集群调度

调度约束 Kubernetes 是通过 List-Watch **** 的机制进行每个组件的协作&#xff0c;保持数据同步的&#xff0c;每个组件之间的设计实现了解耦。 用户是通过 kubectl 根据配置文件&#xff0c;向 APIServer 发送命令&#xff0c;在 Node 节点上面建立 Pod 和 Container。…