Nginx快速入门部署前端项目

news2024/12/21 10:43:53

目录

一,Nginx简介

1.1 负载均衡

演示

1.1.2 安装nginx

再复制一份一样的tomcat并修改端口号

 打开两个tomcat的服务

 打开防火墙中的8081端口

 修改Nginx配置

 重启Nginx服务,让配置生效

1.2 反向代理

 Nginx项目部署

1.确保前端项目能用

 2.将前台项目打包

动静分离

在电脑中增加本地映射关系

 完成Nginx动静分离的default.conf相关配置 

定义规格:URl符合xxx标准走动态请求,不符合走静态请求

修改action.js地址为自己本地中刚刚配置的映射,添加api的路径配置

 删除项目的本地目录中之前打出的dist包,并重新生成(配合Nginx动静分离)

 重启Nginx

将前端构建好的dist项目,上传到云服务器/usr/local/..

  最后再修改default.conf下的server

​重启Nginx即可


一,Nginx简介

示例图

1.1 负载均衡

因为tomcat的承受请求的能力比较有限,如果当请求服务的数量超过了tomcat的负载时就会造成服务器崩溃的情况 所以此时Nginx的作用就来了,它可以用于分发浏览器的请求给多个tomcat,从而分担请求压力,实际处理请求的还是tomcat。(以上是小刘自己的理解,如有不正还望指出)所以我们也需要在我们的电脑的虚拟的服务器中安装多个tomcat,本期由于电脑的配置,小刘就安装两个tomcat,可以根据自己情况而定

演示

准备工作:1个nginx,2个tomcat

1.1.2 安装nginx

1) 添加 nginx 官方提供的 yum 源(需要联网且时间较长)
 rpm -Uvh http://nginx.org/packages/centos/7/x86_64/RPMS/nginx-1.14.2-1.el7_4.ngx.x86_64.rpm

2) 使用 yum 安装 nginx
 yum install nginx

注1:yum方式安装nginx,它的安装根目录为/etc/nginx
 注2:查看nginx版本
      rpm -qa | grep nginx

 默认端口是80

3) 启动及设置开机启动
 systemctl start nginx.service
 systemctl enable nginx.service

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

 5) 测试 nginx 是否可被访问,应该显示nginx的欢迎界面
  http://服务器IP地址:80/

此时我们就已经安装好其中一个服务器了

我们再启动两个tomcat,其中小刘本来就已经解压好了一个,只需要

再复制一份一样的tomcat并修改端口号

可以先进入自己存放解压包的文件夹,查看一下已有的文件(不是必要步骤)

复制原有tomcat指令:

cp -r apache-tomcat-8.5.20/ apache-tomcat-8.5.20_8081/ 

 执行指令再次查看多了一个tomcat

 修改它的端口号,目录从左到右

 进入配置文件,修改完成Ctr+S

 

 打开两个tomcat的服务

 打开防火墙中的8081端口

依次执行以下语句

开放端口
firewall-cmd --zone=public --add-port=8081/tcp --permanent

跟新防火墙规则
firewall-cmd --reload
防火墙列表
firewall-cmd --zone=public --list-ports

 测试两个tomcat是否能启用

8081

 8080

 为了验证负载均衡的效果,我们将8081的tomcat的主页面给修改掉,看到时会请求到哪一个服务器

修改主页面的目录地址:

将index.jsp中的head中的内容改为8081 

index.jsp

 修改后的页面:

 修改Nginx配置

在nginx.conf添加

upstream  tomcat_list {  #服务器集群名字
    server    127.0.0.1:8080  weight=1;   #服务器1   weight是权重的意思,权重越大,分配的概率越大。
    server    127.0.0.1:8081  weight=1; #服务器2   weight是权重的意思,权重越大,分配的概率越大

在default.conf添加

location / {
      #root   /usr/share/nginx/html;
      #proxy_pass   http://172.17.0.3:8080;
      proxy_pass   http://tomcat_list;
      index index.html index.htm;
  }

 重启Nginx服务,让配置生效

systemctl restart nginx 

 重启服务后,访问Nginx页面 出现问题

 去日志文件中查看报错

 进入日志文件查看报错,经过一系列的查找资料发现原来是权限问题

 需要进入配置文件中执行该语句进行授权

setsebool -P httpd_can_network_connect 1

之后我们再去刷新nginx页面,发现可以访问到它随机分配给我们的服务器

 此时就算我们其中的一个tomcat崩溃了Nginx还可以把请求配发给其他的服务器

现在的Nginx已经可以给多个tomcat分发请求了!!!

1.2 反向代理

反向代理的情况就好比一个公司将它的tomcat放在了公司内网中,外界人员是无法直接链接并且发送请求的,此时就可以用到Nginx,因为Nginx中是可以设置好比白名单和黑名单的功能的,比如一个身居高位的处长,他的电脑的ip地址就可能会放在Nginx的白名单中,他就有可以使用的权限,而其他人是没有的,总的作用就是可以将一个在外网不能使用内网服务的情况进行一个反转的实现

 Nginx项目部署

1.确保前端项目能用

打开项目所在的本地目录启动 npm run dev

 2.将前台项目打包

先关闭项目 

再修改两处地方,第一处

hbuilderX打包vue项目白屏问题
将项目目录下的config文件夹里的index.js文件中,将build对象下的assetsPublicPath中的“/”,改为“./”后,再打包生成的 dist 文件
build: {
    // assetsPublicPath: '/',//修改前
    assetsPublicPath: './',//修改后
}

 

hbuilderX打包vue项目,element-ui的icon图标无法正常显示问题
问题:使用vue-cli3脚手架搭建的项目,在打包文件上服务器的时候,其他的css,js样式都能正确加载出路径,
但是element的icon图标却不能正常加载出来。

问题分析:
加载的路径https://yxq.linksign.cn/static/css/static/fonts/element-icons.535877f.woff
本应该加载的路径https://yxq.linksign.cn/static/fonts/element-icons.535877f.woff
打包的路径
事实上是打包时候读取的文件路径多了两层;
找到build文件的utils.js 中有打包的路径,看看generateLoaders();
Extract CSS when that option is specified, 指定该选项时提取CSS
发现少了个公共路径,加上pubilcPath
if (options.extract) {
     return ExtractTextPlugin.extract({
       use: loaders,
       fallback: 'vue-style-loader',
       // 解决icon路径加载错误
       publicPath:'../../'
     })
   } else {
     return ['vue-style-loader'].concat(loaders)
   }

打包:npm run build(测试本地项目打包后没有问题)

 多了一个文件夹,里面就是打出来的项目

 index.html中包含了原项目中的所有功能

动静分离

在我们的项目中是大致分为两种文件的 有静态的也有动态的,此时Ngianx就可以做到将项目中不同的文件进行分类到不同的服务中,进行选择性的指定访问的服务器 动态请求走tomcat 静态请求走nginx

静态文件

 动态请求

在电脑中增加本地映射关系

1.C:\Windows\System32\drivers\etc\hosts中增加映射关系
192.168.195.139 www.xl.com

 完成Nginx动静分离的default.conf相关配置 

        定义规格:URl符合xxx标准走动态请求,不符合走静态请求

 配置到这里我们只是完成了后台的动态的的负载均衡,静态还没有,前端项目没有配置

此时我们需要重新打出一份前端项目,并提前

修改action.js地址为自己本地中刚刚配置的映射,添加api的路径配置

 删除项目的本地目录中之前打出的dist包,并重新生成(配合Nginx动静分离)

 重启Nginx

 

 测试打包出来的项目

在登陆成功时发送的请求

 其中有个api,所以被Nginx的配置中的动态规格给处理了

将前端构建好的dist项目,上传到云服务器/usr/local/..

小刘新建了一个文件夹用于存放的dist

  最后再修改default.conf下的server

listen       80;            #监听80端口,可以改成其他端口
    #server_name  localhost;    #当前服务的域名
    server_name  www.xl.com; #当前服务的域名(虚拟域名也可以)
    root         /usr/local/mypro/dist;      #将要访问的网站的根目录,nginx节点会自动继承父节点的配置;这里放到/usr/local/*,放到其他路径下会有权限相关问题;必要的时候配置Nginx.conf的user为root

重启Nginx即可

systemctl restart nginx

输入www.xl.com地址

成功

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

看过来,Windows 11 Insider Preview 25231.1000推送啦!

微软于近日凌晨发布新的Windows 11内部预览版系统,版本号为25231.1000,该系统对平板任务栏体验进行了改进,修复了系统托盘、设置等问题。下面一起来看看完整的更新内容。 更新日志 TL;速度三角形定位法(dead reckoning…

【ASM】字节码操作 转换已有的类 清空方法体

1.概述 在文章:【ASM】字节码操作 转换已有的类 移除Instruction 移除NOP 中我们学会了如何移除NOP。 本章我们将学习如何清空方法体。 1.1 如何清空方法体 在有些情况下,我们可能想清空整个方法体的内容,那该怎么做呢?其实,有两个思路。 ●第一种思路,就是将instructi…

Spring中事务的传播机制以及REQUIRED、REQUIRES_NEW、NESTED区别以及代码演示

​📒个人主页:热爱生活的李📒 ​❤️感谢大家阅读本文,同时欢迎访问本人主页查看更多文章​❤️ 🙏本人也在学习阶段,如若发现问题,请告知,非常感谢🙏 事务隔离级别demo理…

[计算机网络]第一章 概述 -- 1.1 计算机网络在信息时代中的作用 1.2 互联网概述

文章目录1.1 计算机网络在信息时代中的作用1.2 互联网概述1.2.1 网络的网络1.2.2 互联网基础结构发展的三个阶段第一阶段第二阶段第三阶段1.2.3 互联网标准化工作1.1 计算机网络在信息时代中的作用 21世纪是以网络为核心的信息时代,21世纪的重要重要特征&#xff1a…

小侃设计模式(二)-单例模式

1.概述 设计模式在粒度和抽象层次上各不相同,因此从不同的角度,分类形式也不同,目前存在两种较为经典的划分方式,即根据模式作用的范围、模式的目的来划分。根据模式主要是用于类还是用于对象,可将其划分为类模式和对…

【JavaWeb】Tomcat

1.JavaWeb是指所有通过java语言编写可以通过浏览器访问的程序的总称 请求是指客户端给服务器发送数据 响应是指服务器给客户端回传数据 2.Web资源按实现的技术和呈现的效果的不同,又分为静态资源和动态资源两种. 静态资源:html css js txt mp4视频 jpg图片 动态资源:jsp页面 se…

前端工程化基建探索:从内部机制和核心原理了解npm

大厂技术 坚持周更 精选好文 前言 本文【前端工程化基建探索】的第2篇,上一篇 前端工程化基建探索(1)前端大佬,你好! 当我们拉取一个前端工程化项目,都会通过npm/Yarn/pnpm 管理工具来安装项目的依赖&am…

大学解惑06 - 要求输入框内只能输入2位以内小数,怎么做?

请听题:有一个输入框,准备用于计算使用,要求点击“校验”按钮的时候进行验证,必须输入数字,并且只能是2位以内的小数,如果输入不合法,请给出提示,如果输入合法通过验证,则…

又是一篇教你摸鱼的文章,用Python实现自动发送周报给老板

前言 有没有哪个同志跟我一样,每周都要写工作周报 像我这种记性不好的,一个月四周忘记三次 索性就用Python写个小工具,让它每周帮我给老板发周报~ Github: Weekday 小工具 提出目标 源码.资料.素材.点击领取即可 想有一个工具能发邮件 目…

ARM 汇编基础

一、ARM架构 ARM芯片属于精简指令集计算机(RISC:Reduced Instruction Set Computing),它所用的指令比较简单,有如下特点: 对内存只有读、写指令对于数据的运算是在CPU内部实现使用RISC指令的CPU复杂度小一点,易于设计…

WebShell箱子简介与原理

今天继续给大家介绍渗透测试相关知识,本文主要内容是WebShell箱子简介与原理。 免责声明: 本文所介绍的内容仅做学习交流使用,严禁利用文中技术进行非法行为,否则造成一切严重后果自负! 再次强调:严禁对未授…

【面试】【项目】谷粒商城

视频链接 项目调查 这项目是这么多免费视频里最好的了。但依旧是demo。 最好还是买慕课网上的实战课,那些老师都有丰富的开发经验,有经验跟没经验讲的课是完全不同的。 谷粒商城我觉得是不low的,我很菜,毕业一年半被多次辞退&a…

数据结构之-【排序】

目录 排序 ⚡️冒泡排序 ⚡️选择排序 ⚡️插入排序 ⚡️堆排序 ⚡️归并排序 ⚡️快速排序 🏳️‍🌈排序 将数字从小到大的顺序排列 🔴冒泡排序 「冒泡排序」重复"从序列右边开始比较相邻两个数字的大小,再根据结果交换两个…

国产蓝牙耳机哪个牌子好?国产蓝牙耳机质量排行榜

随着3.5 mm耳机插孔被淘汰,特别是5G时代,让手机的内部结构变得越来越小,要将耳机插口塞进一个新的插口,无疑是一件非常困难的事情,而随着蓝牙技术的不断进步,蓝牙耳机也逐渐成为了如今人们配戴手机的首选&a…

Revit中阀门在项目中不可用无法与管道连接?

一、Revit中阀门在项目中不可用的问题 在项目中放置阀门时,有时候不可用,会出现如图1所示问题,无法与管道连接。 出现上图显示问题是因为在编辑族的时候,阀门两边的连接件原心没有完全重合。打开编辑族界面,可以看到如…

怎么辨别哪些才是真的低代码开发平台?

怎么辨别哪些才是真的低代码开发平台?第一次看到这个问题时,我就知道为什么有人会这么问了,目前低代码市场龙蛇混杂,普通人很难分辨出“真”低代码。所以这个问题中“真正”二字最为重要,圈起来,下面我们正…

【产品新体验】CSDN开发云·云IDE使用教程

【产品新体验】CSDN开发云云IDE使用教程1、初识云IDE1.1 拉去git项目1.2 密钥管理2、整体分析云IDE产品介绍 云IDE使用教程 免费使用地址:点击【云IDE】,即可开始创建工作空间啦~ CSDN最新产品【云IDE】来啦!【云IDE】将为各位技术er一键秒级…

No6-3.从零搭建spring-cloud-alibaba微服务框架,实现资源端用户认证与授权等(三,no6-3)

代码地址与接口看总目录:【学习笔记】记录冷冷-pig项目的学习过程,大概包括Authorization Server、springcloud、Mybatis Plus~~~_清晨敲代码的博客-CSDN博客 之前只零碎的学习过spring-cloud-alibaba,并没有全面了解过,这次学习p…

【Python】入门,总结与拾遗

前言 根据我的实践经验来看,对于有编程基础(如C语言)的同学来说,python入门应该很简单,而且加上官方文档做得非常好,所以个人建议python的学习主要去参考官网。本博客主要是记录那些容易忽略的关键点以及对…

蓝桥杯单片机第七届省赛题详细讲解(温度记录器)

看之前强烈建议先自己做一遍!!!演示效果题目讲解代码main.cds1302.cds1302.honewire.conewire.h工程文件演示效果 题目讲解 首先我们从系统框图看起: 做题之前要做的是把系统框图里面的各个模块先提前调试好!&#x…