Nginx部署笔记

记录Nginx部署Vue项目的流程,以及部署后前端出现问题的解决方案。

目录

一、安装nginx
二、部署流程
三、解决前端路由history模式刷新页面404的问题
四、Nginx解决前端项目打包缓存问题
五、后话

一、安装nginx

http://nginx.org/ ,找到页面右下角的download,例如选nginx-1.22.1,点击下载,解压放到你心仪的盘符文件夹中。

二、部署流程

Nginx根目录重要文件说明

conf:里面有配置文件nginx.conf

html:放打包好的Vue项目,即前端dist包。
将前端打包的dist文件夹复制进来,dist重命名为前端项目的英文名称

nginx.exe:nginx启动项

如何进入命令行终端去敲命令

任选其一即可

1、按Win + R,输入cmd,回车

2、在Nginx根目录url中,清空所有,输入cmd,回车

3、在Nginx根目录按住Shift + 鼠标右键,点击 在此处选择Powershell 窗口

用文本打开,修改部署访问路径

文件路径:nginx-1.22.1\conf\nginx.conf

修改location对象的 root html/项目名称 例如 html/vitelearn;

 server {listen       9900; # 自定义端口号,找没有被占用的。怎么查看端口是否已被占用,请看下面Windows命令location / {root   html/vitelearn; # 对应nginx-1.22.1\html\项目名称 }}

Nginx.conf 完整代码如下

#user  nobody;
worker_processes  1;
events {worker_connections  1024;
}http {include       mime.types;default_type  application/octet-stream;sendfile        on;keepalive_timeout  65;gzip  on;gzip_min_length  1k;          #最小压缩大小gzip_buffers     4 16k;       #压缩缓冲区gzip_http_version 1.0;        #压缩版本gzip_comp_level 2;            #压缩等级gzip_types   text/plain text/css text/xml text/javascript application/json application/x-javascript application/xml application/xml+rss font/ttf font/otf imagesvg+xml;#压缩类型server {listen       9900;location / {root   html/vitelearn;index  index.html index.htm;try_files $uri $uri/ /index.html;}#error_page  404              /404.html;error_page   500 502 503 504  /50x.html;location = /50x.html {root   html;}}
}
Window命令

不知道怎么进命令行终端,请看上面 如何进入命令行终端去敲命令

netstat -aon|findstr "XXX"   检查端口是否被占用   例如: netstat -aon|findstr "9900"
taskkill /f /t /im nginx.exe   杀死所有nginx服务进程(其中包括端口) 
Nginx命令
每次打前端dist包,先停止再重启
nginx  -s stop  停止
start nginx  启动nginx -s reload  重载
补充说明:前端dist包没变动,只修改了nginx配置,此时需要重新加载最新的nginx配置

三、解决前端路由history模式刷新页面404的问题

方案1、前端路由模式mode为history

说明:即没#号的。需要在nginx添加一行代码,添加完保存。
nginx配置修改如下:

server {location / {root   html/vitelearn;index  index.html index.htm;try_files $uri $uri/ /index.html;  # 加这一句}
}
两种情况(根据不同情况选择对应的方法,二选一即可):
1、如果前端dist包有变动,nginx配置也变动,需要停止并重启nginxnginx  -s stop  停止  start nginx  启动
2、如果前端dist包没变动,nginx配置有变动,执行nginx重载即可nginx -s reload

再次刷新部署后的页面就不会出现404错误了。

Vue2/Vue3不同版本的history设置如下

  • Vue2

在router/index.js 设置路由模式

export default new Router({routes:[....]mode: "history", 
});
  • Vue3

在router/index.ts,封装路由的页面,引入history方法

import { createWebHistory } from 'vue-router'  const router = createRouter({history: createWebHistory(), routes,
})
方案2、修改路由模式mode为hash 哈希

说明:它会在url多一个#,比较难看,但它不需要在nginx配置代码,同时它刷新页面不会报404.

Vue2/Vue3不同版本的hash设置如下

  • Vue2
export default new Router({routes:[....]mode: "hash", 
});
  • Vue3
import { createWebHashHistory } from 'vue-router'  const router = createRouter({history: createWebHashHistory(), routes,
})

四、Nginx解决项目重新打包后,但线上页面出现缓存的问题

用文本形式打开 nginx-1.22.1\conf\nginx.conf,在location中加入这个if判断。location的其他配置不需要删除

 server {location / {if ($request_filename ~* .*\.(?:htm|html)$)  {add_header Cache-Control "no-store, no-cache";}}

五、后话

做个笔记,方便下次忘了过来查阅。小伙伴们,如果你们学完一个东西或者很有心得,有空了可以将新学的知识点整理成自己的笔记,下次遇到就无需花这么多时间查阅,而是快速回顾,精准打击,逐一击破。

加油,慢慢点亮自己的技能树。😊

参考这位大佬的文章: https://www.cnblogs.com/Yan3399/p/17202859.html,感恩感谢这位大佬🙏。

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

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

相关文章

leetcode2975. 移除栅栏得到的正方形田地的最大面积

题目 有一个大型的 (m - 1) x (n - 1) 矩形田地,其两个对角分别是 (1, 1) 和 (m, n) ,田地内部有一些水平栅栏和垂直栅栏,分别由数组 hFences 和 vFences 给出。 水平栅栏为坐标 (hFences[i], 1) 到 (hFences[i], n),垂直栅栏为…

企业微信 get请求 设置可信域名

import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController;RestController public class ValidController {GetMapping("/xxxxx.txt")public String getText() {//返回下载的txt里的内容return &…

React 实现 Step组件

简介 本文将会实现步骤条组件功能。步骤条在以下几个方面改进。 1、将url与Step组件绑定,做到浏览器刷新,不会重定向到Step 1 2、通过LocalStorage 存储之前的Step,做到不丢失数据。 实现 Step.jsx (组件) import {useEffect, useState} fro…

Java并行流parallelStream()下InheritableThreadLocal引起的问题

Java并行流parallelStream()下InheritableThreadLocal引起的问题 引起问题的代码。 List orgs00 Arrays.asList(new Org("aaa"),new Org("bbb"),new Org("aa0"));List orgs orgs00.parallelStream() .map(org -> {// 模拟从数据库中获取 …

如何用致远OA连接电商、CRM实现高效营销

连接电商与CRM:高效营销的关键 在竞争激烈的商业环境中,电商企业迫切需要将其营销活动提升到更高的水平。利用致远OA连接电商平台与CRM系统,可以打造一个无缝的信息流,从而实现高效的营销策略。通过自动化的数据同步,…

车流量识别摄像机

车流量识别摄像机是一种利用先进的图像识别技术和智能算法来监测道路上车辆数量和流量的设备。通过安装在道路或交通路口的摄像头,可以实时准确地统计车辆的通过情况,进而为交通管理、道路规划以及交通安全提供重要数据支持。 车流量识别摄像机主要通过计…

机器学习的三个方面

1 机器学习的三个方面 1.1 数据 包括数据采集、增强和质量管理,相当于给人工智能模型学习什么样的知识 第一、什么专业的知识; 第二、知识是否有体系,也就是说样本之间是否存在某种关联、差异等,这个涉及到样本选择等问题&#x…

SqlServer内存使用情况

-- 查询执行中sql语句 SELECT TOP 500 [session_id], [request_id], [start_time] AS 开始时间, getdate() as 当前时间, [status] AS 状态, [command] AS 命令, dest.[text] AS sql语句, DB_NAME([database_id]) AS 数据库名, [blocking_session_id] AS 正在阻塞其他会话的会话…

Docker资源配额

Docker资源配额指的是对Docker容器或服务在系统资源使用方面的限制。 通过资源配额,可以控制和限制Docker容器可以使用的CPU、内存、磁盘空间和网络带宽等资源。 根据应用程序的需求和系统环境来设置适当的资源配额:过于严格的配额可能导致应用程序性能下…

码云Gitee复制 GitHub 项目

码云提供了直接复制 GitHub 项目的功能,方便我们做项目的迁移和下载。 1.新建仓库 2.导入仓库 3.强制同步 如果 GitHub 项目更新了以后,在码云项目端可以手动重新同步,进行更新!

CSS新增文本描边-text-stroke属性

-webkit-text-stroke属性 概念:-webkit-text-stroke属性为文本添加描边效果。所谓的描边效果,指的是给文字添加边框 语法: -webkit-text-stroke:width color;Chrome和Firefox这两个浏览器都只能识别带有-webkit前缀的text-stroke属性 -web…

金和OA C6 UploadFileEditorSave.aspx 任意文件上传漏洞

产品介绍 金和网络是专业信息化服务商,为城市监管部门提供了互联网监管解决方案,为企事业单位提供组织协同OA系统开发平台,电子政务一体化平台,智慧电商平台等服务。 漏洞概述 金和 OA C6 uploadfileeditorsave接口处存在任意文件上传漏洞,攻击者可以通过构造特殊…

洛谷——P1983 [NOIP2013 普及组] 车站分级(拓扑排序、c++)

文章目录 一、题目[NOIP2013 普及组] 车站分级题目背景题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 样例 #2样例输入 #2样例输出 #2 提示 二、题解基本思路:代码 一、题目 [NOIP2013 普及组] 车站分级 题目背景 NOIP2013 普及组 T4 题目描述 一条单…

面试题:说一下Java开启异步线程的几种方法?

文章目录 整体描述实现方法一、注解Async1. 添加注解2. 创建异步方法Service和实现类3. 调用异步方法 二、AsyncManager1. 创建AsyncManager类2. 创建一个耗时的操作类3. 执行异步操作 三、线程池1. 创建线程池2. 创建一个耗时的操作类3. 执行线程池 总结 整体描述 在java中异…

使用STM32的定时器和PWM实现LCD1602的背光控制

使用STM32的定时器和PWM功能来控制LCD1602的背光是一种常见的方法,它可以实现背光的亮度调节和闪烁效果。在本文中,我们将讨论如何利用STM32的定时器和PWM来实现LCD1602的背光控制,并提供相应的代码示例。 1. 硬件连接和初始化 首先&#x…

大语言模型LLM微调技术:Prompt Tuning

1 预训练语言模型概述 1.1 预训练语言模型的发展历程 截止23年3月底,语言模型发展走过了三个阶段: 第一阶段 :设计一系列的自监督训练目标(MLM、NSP等),设计新颖的模型架构(Transformer&#…

二蛋赠书十三期:《一书读懂物联网》

前言 大家好!我是二蛋,一个热爱技术、乐于分享的工程师。在过去的几年里,我一直通过各种渠道与大家分享技术知识和经验。我深知,每一位技术人员都对自己的技能提升和职业发展有着热切的期待。因此,我非常感激大家一直…

标书制作的几个关键部分

在当今社会,无论是企业还是个人,参与招投标都是获取资源、项目或服务的重要途径。而一份优秀的标书,无疑是成功的关键。那么,标书究竟包含哪些部分呢? 1.封面与目录 封面是标书的脸面,它直接决定了评审专…

k8s的声明式资源管理(yaml文件)

1、声明式管理的特点 (1)适合对资源的修改操作 (2)声明式管理依赖于yaml文件,所有的内容都在yaml文件当中 (3)编辑好的yaml文件,还是要依靠陈述式的命令发布到k8s集群当中 kubect…

js 颜色转换,RGB颜色转换为16进制,16进制颜色转为RGB格式

颜色转换,RGB颜色转换为16进制,16进制颜色转为RGB格式,可以自己设置透明度。 //十六进制颜色值的正则表达式 var reg /^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/; /*RGB颜色转换为16进制*/ String.prototype.colorHex function () {var that this;if (/^…