nginx: 部署前端项目的详细步骤(vue项目build打包+nginx部署)

news2024/11/24 12:17:11

目录

第一章 前言

第二章 准备工作

2.1 项目打包理解

2.1.1 打包命令

2.1.2 理解npm run serve/dev 和 npm run build命令

2.2 nginx参数配置理解

2.2.1 nginx常用基本命令

2.2.2 默认配置

2.2.3 搭建不同网站的站点

2.2.4 禁止访问的目录以及一键申请SSL证书验证目录相关设置

2.2.5 根据文件类型设置过期时间

2.2.6 禁止文件缓存

2.2.7 跨域问题

第三章 配置参考


第一章 前言

在我们前端开发中也经常需要把前端的静态资源放到服务器中看效果,那么我们就需要用到nginx来配置!!该文章主要以npm为例,当然还有yarn、pnpm,但是知识是相通的!!!

第二章 准备工作

2.1 项目打包理解

2.1.1 打包命令

不用说肯定是npm run build肯定是没错的

npm run build 或者
yarn run build

但是当经理对我们说,你打一个测试包发给我/你打一个生成包发给我,这个时候涉及到了多环境的打包怎么办呢,接下来就以小编的理解说说:打包的情况

2.1.2 理解npm run serve/dev 和 npm run build命令

npm ERR!Missing script: “dev“npm ERR!npm ERR! To see a list of scripts, run(npm run serve/dev/build)_❆VE❆的博客-CSDN博客

2.2 nginx参数配置理解

2.2.1 nginx常用基本命令

//开启服务
1.start nginx.exe // cmd命令进入nginx文件夹后,使用该命令
2.直接点击nginx目录下的nginx.exe

// 停止服务
nginx -s stop // 快速停止nginx
nginx -s quit // quit是完整有序的停止nginx

//重新加载配置文件
nginx -s reload // 热加载

2.2.2 默认配置

nginx-1.21.0\conf下的nginx.conf

# 工作进程的数量
worker_processes  1; # 与worker_connections乘积表示实际处理事件的总数
events {
    worker_connections  1024; # 每个工作进程连接数
}

http {
    include       mime.types;  # 文件扩展名与文件类型映射表
    include       self/ *.conf; # 独立出不同网站不同配置文件,引入其他的配置文件
    default_type  application/octet-stream; # 默认文件类型

    # 日志格式
    log_format  access  '$remote_addr - $remote_user [$time_local] $host "$request" '
                  '$status $body_bytes_sent "$http_referer" '
                  '"$http_user_agent" "$http_x_forwarded_for" "$clientip"';
    access_log  /srv/log/nginx/access.log  access; # 日志输出目录
    gzip  on; # gzip模块设置,设置是否开启gzip压缩输出
    sendfile  on; # 开启文件传输模式
    #tcp_nopush  on; # 减少网络报文数量
   
    #keepalive_timeout  0; # 连接不超时,单位 s
    # 链接超时时间,自动断开
    keepalive_timeout  60;

    # 虚拟主机
    server {
        listen       80; # 监听地址以及端口
        server_name  localhost; # 浏览器访问域名

        charset utf-8; # 默认字符集
        access_log  logs/localhost.access.log  access;

        # 路由
        location / {
            root   html; # 访问根目录 nginx-1.21.0\html
            index  index.html index.htm; # 入口文件,可以接收index、index.html、index.htm文件
        }
    }
}

2.2.3 搭建不同网站的站点

 在其他配置文件'self'目录下,添加新建站点的配置文件'xxx.conf'

server {
    listen       8070; # 自定义监听端口
    server_name  127.0.0.1; # 浏览器访问域名

    charset utf-8;
    access_log  logs/xx_domian.access.log  access;

    # 路由
    location / {
        root   dist; # 访问根目录 nginx-1.21.0\dist
        index  index.html index.htm; # 入口文件类型
    }
}

2.2.4 禁止访问的目录以及一键申请SSL证书验证目录相关设置

    #禁止访问的文件或目录
    location ~ ^/(\.user.ini|\.htaccess|\.git|\.svn|\.project|LICENSE|README.md)
    {
        return 404;
    }
    
    #一键申请SSL证书验证目录相关设置
    location ~ \.well-known{
        allow all;
    }

2.2.5 根据文件类型设置过期时间

    # location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
    # {
    #     expires      30d; // 30天过期
    #     access_log off;
    # }
    
    # location ~ .*\.(js|css)?$
    # {
    #     expires      12h;
    #     access_log off; 
    # }

2.2.6 禁止文件缓存

location ~* \.(js|css|png|jpg|gif)$ {
    add_header Cache-Control no-store;
}

2.2.7 跨域问题

场景:

        -- 我们前端使用的路径配置为:http://127.0.0.1:8070/(nginx配置)

        -- 需要向后端请求的路径为: http://192.168.1.19:8087/(项目打包配置)

此时前端向后端发送请求一定会出现跨域!!

解决方法:启动nginx服务器,将server_name设置为127.0.0.1,然后设置响应的拦截前端需要跨域的请求置相应的location以拦截前端需要跨域的请求,最后将请求代理回自己需要请求的后端路径,以我的为例:

server
{
    listen 8001;
    server_name 127.0.0.1;

    location /api/ {
         proxy_pass  http://192.168.1.19:8087/;
         proxy_http_version 1.1; # http版本
         proxy_set_header Upgrade $http_upgrade; # 继承地址,这里的$http_upgrade为上面的proxy_pass
         proxy_set_header Connection "upgrade"; 
         proxy_set_header  X-Real-IP $remote_addr; # 传递的ip
         proxy_connect_timeout 60;
         proxy_send_timeout  60;
         proxy_read_timeout 3000;
    }
}

第三章 配置参考

小编基本配置提供参考——

server
{
    listen 8070;
    server_name 127.0.0.1;
    index index.php index.html index.htm default.php default.htm default.html;
    root dist;

    #REWRITE-END
    
    #禁止访问的文件或目录
    location ~ ^/(\.user.ini|\.htaccess|\.git|\.svn|\.project|LICENSE|README.md)
    {
        return 404;
    }
    
    #一键申请SSL证书验证目录相关设置
    location ~ \.well-known{
        allow all;
    }
    
    # location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
    # {
    #     expires      30d;
    #     access_log off;
    # }
    
    # location ~ .*\.(js|css)?$
    # {
    #     expires      12h;
    #     access_log off; 
    # }
    location /api/ {
        proxy_pass  http://192.168.1.19:8087/;
        proxy_http_version 1.1; # http版本
        proxy_set_header Upgrade $http_upgrade; # 继承地址,这里的$http_upgrade为上面的proxy_pass
        proxy_set_header Connection "upgrade"; 
        proxy_set_header  X-Real-IP $remote_addr; # 传递的ip
        proxy_connect_timeout 60;
        proxy_send_timeout  60;
        proxy_read_timeout 3000;
    }
    
    location / {
      try_files $uri $uri/ /index.html;
      index  index.html index.htm;
    }
    
}

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

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

相关文章

Red Hat更新开发套件了,有你期待的功能吗?

导读近日,Red Hat公司将Red Hat Development Suite更新到了2.0版本,其中包括对Red Hat JBoss Development Suite和Red Hat Container Development Kit的一系列优化。 Red Hat Development Suite 2.0版本的主题是扩展可用性与产品集成,以及扩展…

毕业设计--基于SpringBoot+Vue的科研课题项目管理系统

介绍 基于SpringBootVue的科研课题项目管理系统 ; 实现 登录 /注销、 用户管理、项目管理、申报管理、变更管理、结题管理、角色管理、权限管理、数据字典等功能 ; 可作为 SpringBoot前后端分离项目 开发练习模型、课程设计 、 毕业设计 等。 环境准…

上车加速!为下一代LCoS HUD造势,华为和哪些企业在领跑

高工智能汽车研究院监测数据显示,今年1-7月中国市场(不含进出口)乘用车前装标配W/AR HUD交付108.35万辆,同比增长47.98%,前装搭载率升至9.82%。 其中,从价位区间分布来看,30万元及以上车型标配W…

【如何看待Unity收费】对标中小公司的待就业者的该如何做

👨‍💻个人主页:元宇宙-秩沅 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 秩沅 原创 👨‍💻 收录于专栏:Uni…

多个vtk文件合并

收费工具,白嫖党勿扰 收费金额200元 程序下载链接 1 概述 最近在项目上,有一个客户,通过超算,得到了几百个vtk文件,让我们显示出来,将这几百个vtk文件分别解析,然后再做可视化显示&#xff0c…

更好的用户体验, 开源实时监控新版发布

哈喽大家好,时间很快两个月又过去了,HertzBeat 经过近两个月的迭代终于发布了 v1.4.1 版本。为什么是终于,因为有点难哈哈。我们参考 rocketmq 重构了 netty 的 server client 端模块,重构了采集器集群调度。比起上一版本有了更优…

2023-09-27 monetdb-存储架构-记录

摘要: 2023-09-27 monetdb-存储架构-记录 存储架构 MonetDB SAM/BAM 模块支持两种类型的模式来存储 SAM/BAM 数据。使用顺序模式,所有对齐记录都可以轻松读取、解析并随后存储,与它们在 SAM/BAM 文件中的存储方式相当。使用成对模式,对齐记…

【计算机网络笔记六】应用层(三)HTTP 的 Cookie、缓存控制、代理服务、短连接和长连接

HTTP 的 Cookie HTTP 的 Cookie 机制要用到两个字段:响应头字段 Set-Cookie 和请求头字段 Cookie。 Cookie 可以设置多个 key-value 对, 响应头中可以设置多个 Set-Cookie 字段,请求头Cookie后面可以设置多个键值对,用分号隔开&a…

Linux工具(二)

前言:在Linux工具(一)中,我们学习了yum软件安装工具和vim文本编辑器工具,那么本次我们就再来介绍两种工具,分别是,编辑器gcc/g、项目自动化构建工具-make/Makefile ,接着我们再来写一…

【Linux进行时】环境变量and进程优先级

1.环境变量 ❓首先一个问题:我写的代码(这个代码很简单,不用管)编译之后运行的时候为什么要带./ ? 或者说我怎么才可以让我不用带./ ? 💡.代表当前文件下,/是文件分隔符,…

【re】BUUCTF [GXYCTF2019]luck_guy

题目&#xff1a;BUUCTF [GXYCTF2019]luck_guy 无壳&#xff0c;64位&#xff0c;ida打开找找找到get_flag()函数 for ( i 0; i < 4; i ){switch ( rand() % 200 ){case 1:puts("OK, its flag:");memset(s, 0, sizeof(s));strcat((char *)s, f1);strcat((char *…

Mysql基础【操作数据库表】

一、数据库相关概念&#x1f353; 数据库: 存储数据的仓库&#xff0c;数据是有组织的进行存储,英文&#xff1a;DataBase&#xff0c;简称 DB 存储和管理数据的仓库其本质是一个文件系统, 还是以文件的方式,将数据保存在电脑上 数据库管理系统&#xff1a;管理数据库的大型软…

常用黑客指令【建议收藏】

系统信息 arch #显示机器的处理器架构(1) uname -m #显示机器的处理器架构(2) uname -r #显示正在使用的内核版本 dmidecode -q #显示硬件系统部件 - (SMBIOS / DMI) hdparm -i /dev/hda #罗列一个磁盘的架构特性 hdparm -tT /dev/sda #在磁盘上执行测试…

【算法系列篇】与链表相关的算法

文章目录 前言1. 两数相加1.1 题目要求1.2 做题思路1.3 Java代码实现 2. 两两交换链表中的节点2.1 题目要求2.2 做题思路2.3 Java代码实现 3. 重排链表3.1 题目要求3.2 做题思路3.3 Java代码实现 4. 合并 k 个升序链表4.1 题目要求4.2.1 做题思路一4.3.1 方法一Java代码实现4.2…

将yolo格式数据集转换为VOC格式

将yolo格式数据集转换为VOC格式 背景代码 由于需要切分图象&#xff0c;将yolo转换为voc格式好处理一些 背景 代码 import xml.dom.minidom import glob from PIL import Image from math import ceil import shutil import osyolo_file rE://黄花标注//glass//train//split…

Ubuntu 23.10 支持基于 TPM 的全磁盘加密

导读即将发布的 Ubuntu23.10 增加了一项实验性功能 —— 初步支持基于 TPM 的全磁盘加密。该功能利用系统的可信平台模块 (TPM)&#xff0c;缺点是这种额外的安全性依赖于 Snaps&#xff0c;包括内核和 GRUB 引导加载器。 Ubuntu 开发商 Canonical 公司表示&#xff0c;Ubuntu…

字节一面:说说HTTP 常见的状态码有哪些,适用场景?

前言 最近博主在字节面试中遇到这样一个面试题&#xff0c;这个问题也是前端面试的高频问题&#xff0c;我们经常与网路请求打交道&#xff0c;与http打交道&#xff0c;也会根据返回的状态码来做出不同逻辑判断&#xff0c;所以作为一个前端工程师必须要深入掌握这个知识点&am…

B2901A 是德科技keysight精密型电源

181/2461/8938Agilent B2901A精密源/测量单元(SMU)是一款单通道、紧凑且经济高效的台式SMU&#xff0c;能够采集和测量电压和电流。它功能多样&#xff0c;可以轻松、高精度地执行I/V(电流与电压)测量。四象限源和测量功能的集成使I/V测量简单易行&#xff0c;无需配置多种仪器…

​我读《乡村振兴战略下传统村落文化旅游设计》许少辉八一新书

​我读《乡村振兴战略下传统村落文化旅游设计》许少辉八一新书 ​我读《乡村振兴战略下传统村落文化旅游设计》许少辉八一新书

系统工程知识体系(SEBoK)

介绍 《系统工程知识体系》&#xff08;SEBoK&#xff09;是以一种理念设计的&#xff0c;即如果工程师有一个实时更新、实用的指南&#xff0c;他们就能做出更优秀的工作。如果你以前没有使用过这个资源&#xff0c;也没有关系&#xff1b;因为已经有一个完整的指南供你参考&…