nginx代理vue项目路由跳转刷新

常规代理

在我们日常开发中,前端部署到服务器,需要用到nginx部署,简单代理如下:


#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;

   
    server {
        listen       8088;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   "E:\develop\xxx\xxx\dist";
            index  index.html index.htm;
        }
        # 添加路由
      
		location /api {
            proxy_pass   http://192.168.1.66:8202/;
            proxy_redirect off;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection 'upgrade';
            proxy_set_header Host $host;
            proxy_cache_bypass $http_upgrade;
        }
    
       
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

      
    }
  
   



}

然后启动nginx,在浏览器输入 localhost:8088回车即可;

代理vue路由

根据常规代理完成后,我们发现,在浏览器里直接输入  localhost:8088/home找不到页面,这样导致直接跳转vue路由失败!如果配置多个路由需要其他页面嵌套或者 打开多个窗口就会出现问题,这里我们需要配置nginx 的一个try_files 属性即可解决:

下面是全部配置


#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;

   
    server {
        listen       8088;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   "E:\develop\xxx\xxx\dist";
            index  index.html index.htm;
            try_files $uri $uri/ /index.html; 
        }
        # 添加路由
      
		location /api {
            proxy_pass   http://192.168.1.66:8202/;
            proxy_redirect off;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection 'upgrade';
            proxy_set_header Host $host;
            proxy_cache_bypass $http_upgrade;
        }
    
       
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

      
    }
  
   



}

然后我们就可以在浏览器输入  localhost:8088/login和 localhost:8088/home直接打开对应vue配置的路由了

nginx代理vue路由,并配置前缀

如果我们项目很多,需要部署到门户上,或者使用的是乾坤,或一些特别的需求,这个时候客户需要我们加上前缀,如  localhost:8088/xxx/home  localhost:8088/xxx/login,这个时候我们需要改两处地方

第一步:修改vue路由,在vue的路由加上前缀

通过路由给的方法 createWebHistory 设置前缀,如果没有前缀 为空或“/”即可,这里我们个我们的路由加上 /Manage 前缀(我这里用的是vue3,如果是vue2 配置base属性)

第二步:我们设置nginx配置,nginx配置也要加上前缀,如下:

注意:我们也要在try_files 属性里加入 /Manage

完整配置


#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;

   
    server {
        listen       8088;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location /Manage {
            root   "E:\develop\xxx\xxx\dist";
            index  index.html index.htm;
            try_files $uri $uri/ /Manage/index.html; 
        }
        # 添加路由
      
		location /api {
            proxy_pass   http://192.168.1.66:8202/;
            proxy_redirect off;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection 'upgrade';
            proxy_set_header Host $host;
            proxy_cache_bypass $http_upgrade;
        }
    
       
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

      
    }
  
   



}

第三步:我服务器上新建Manage文件夹,我们需要把我们的dist的内容包放到Manage文件夹下

配置完这些后 我们启动nginx,然后在浏览器输入 localhost:8088/Manage 或者 localhost:8088/Manage/home都可以打开项目了

 注意事项

1、每次重启nginx的时候要把上次的服务删除,不然有缓存,关闭nginx服务可以去任务管理器关闭, 任务管理器里两个服务, 先关闭下面的一个, 在关闭上面的一个

2、我们配置nginx时候,要注意书写格式,每行代码结束需要加 ";"  分号,不然启动nginx会报错,报错日志在logs的error.log看

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

GPT革命:AI如何重塑我们的未来!

GPT革命:AI如何重塑我们的未来! 😄生命不息,写作不止 🔥 继续踏上学习之路,学之分享笔记 👊 总有一天我也能像各位大佬一样 🏆 博客首页 怒放吧德德 To记录领地 🌝分享…

并查集算法

目录 1.算法介绍 1.1什么是并查集呢,它又是用来干什么的呢? 1.2问题引入 2.算法解析 2.1初始化 2.2合并操作 2.3查找 路径压缩 2.4问题解决代码 3.变式突破 1.算法介绍 1.1什么是并查集呢,它又是用来干什么的呢? 逐字拆…

经典的泡泡龙游戏源码免费下载

源码介绍 HTML5泡泡龙冒险小游戏是一款休闲网页游戏,游戏玩法是玩家从下方中央的弹珠发射台射出彩珠,多于3个同色珠相连则会消失。 源码下载 经典的泡泡龙游戏源码免费下载

【Python绘画】画正方形简笔画

本文收录于 《一起学Python趣味编程》专栏,从零基础开始,分享一些Python编程知识,欢迎关注,谢谢! 文章目录 一、前言二、代码示例三、知识点梳理四、总结 一、前言 本文介绍如何使用Python的海龟画图工具turtle&#…

docker-compose入门级实战教程

🌟🌌 欢迎来到知识与创意的殿堂 — 远见阁小民的世界!🚀 🌟🧭 在这里,我们一起探索技术的奥秘,一起在知识的海洋中遨游。 🌟🧭 在这里,每个错误都…

Flutter Bloc之简单记录

目录 0.库安装 1.插件和自动生成 2.状态的配置 1.初始化中: 2.赋值完成后: 3.如果出错: 3.事件的配置 1.定义一个读取事件 2.定义一个更改事件 4.Bloc的设置 5.Bloc的使用 1.BlocProvider 2.内部调用 参考文章进行类的配置 0.库…

【ARM Cache 系列文章 2.1 -- Cache PoP 及 PoDP 介绍】

请阅读【ARM Cache 及 MMU/MPU 系列文章专栏导读】 及【嵌入式开发学习必备专栏】 文章目录 PoP 及 PoDPCache PoDPCache PoP应用和影响PoP 及 PoDP Cache PoDP 点对深度持久性(Point of Deep Persistence, PoDP)是内存系统中的一个点,在该点达到的任何写操作即使在系统供电…

跳跃游戏二

方法一:(双指针法)此题参考跳台阶问题,题目要求求到达最后一个点的最小跳跃次数,那么我们就可以从最后一个往前推,先看谁能离得最远,并且能跳到最后一个。假设i位置是离最后一个位置最远&#x…

网工内推 | 联通公司,云计算售前,AWS认证优先

01 联通数字科技有限公司 🔷招聘岗位:云计算售前工程师 🔷职责描述: 1.了解私有云,公有云,混合云等云计算技术知识,了解云计算行业现状及发展趋势。 2.承担区域项目售前工作支持,为…

Linux基础指令磁盘管理002

LVM(Logical Volume Manager)是Linux系统中一种灵活的磁盘管理和存储解决方案,它允许用户在物理卷(Physical Volumes, PV)上创建卷组(Volume Groups, VG),然后在卷组上创建逻辑卷&am…

NSS题目练习7

[MoeCTF 2022]baby_file 打开看见一串源代码,需要get传参传入file 题目提示php伪协议 用dirsearch扫描发现flag.php 用php伪协议查看,回显一串base64编码 解码后得到flag [鹤城杯 2021]Middle magic 读取这两个文件 一个php正则表达式 补充&#xff1a…

Element ui图片上传

前言 对于广大小白来说,图片上传简直是上传难,难于上青天!废话不多说,步入正题,您就瞧好吧! 步骤一:前端使用element ui组件(upload上传) 我个人喜欢使用第二个组件&a…

Python 实现乘数加密法

乘数加密是简单代替密码的一种。乘数加密法脱胎于凯撒加密法,加密和解密符号设计把他们转换成数字,加上或者减去密钥,然后把新的数字转换回符号,当我们把加减密钥变成乘以密钥,就是乘法加密法。有关凯撒加密法可以看之前的文章《Python实现凯撒加解密》。 加密过程 乘数加…

【宠粉赠书】大模型时代的网络安全:安恒“网安三剑客”实战指南

不知不觉中,小智的粉丝已经突破一万。为了回馈粉丝们的厚爱,今天小智给大家送上一套网络安全界的三宝书——安恒"网安三剑客"。下面我会详细给大家介绍这套图书,文末留有领取方式。 随着人工智能(AI)和大模型…

HarmonyOS(二十五)——Harmonyos通用事件之点击事件

组件被点击时触发的事件就是点击事件。 1.事件 名称支持冒泡功能描述onClick(event: (event?: ClickEvent) > void)否点击动作触发该回调,event返回值见ClickEvent对象说明。从API version 9开始,该接口支持在ArkTS卡片中使用。 2.ClickEvent对象…

Etcd Raft架构设计和源码剖析1:宏观架构

Etcd Raft架构设计和源码剖析1:宏观架构 | Go语言充电站 序言 Etcd提供了一个样例contrib/raftexample,用来展示如何使用etcd raft。这篇文章通过raftexample介绍如何使用etcd raft。 raft服务 raftexample是一个分布式KV数据库,客户端可…

MySQL数据库常见工具的基础使用_1

在上一篇文章中提到了对MySQL数据库进行操作的一些常见工具 mysqlcheck mysqlcheck是一个用于数据库表的检查,修复,分析和优化的一个客户端程序 分析的作用是查看表的关键字分布,能够让sql生成正确的执行计划(支持InnoDB,MyISAM,NDB)检查的作用是检查…

BGP基础配置实验

接下来R1,R2就可以通过三次握手建立TCP会话 然后建立R2,R4邻居 对R5和R4 然后拿4ping5 但是在4,5之间不能跑别的协议,然后要直接告知才可以 再ping通了建立邻居 用环回建邻居要改一下原 然后在建立的时候要把R4TTL值改成2&#xf…

机器学习:更多关于元学习

目录 Meta Learning vs Self-supervised Learning 自监督学习——找初始化的参数MAML 自动学出合适的参数 MAML:不断的学初始化参数MAML的初始化参数来自BERT MAML:找出来的初始化参数能在训练任务上表现的很好BERT:自监督目标是不同的下游任…

门外汉一次过软考中级(系统集成项目管理工程师)秘笈,请收藏!

24上软考考试已经结束,24下软考备考又要开启了!今年软考发生了改革,很多考试由一年考两次变成了一年考一次,比如高级信息系统项目管理师,比如中级系统集成项目管理工程师,这两科是高、中级里相对简单&#…