梦见买东西是什么意思| 水由什么构成| 甲醛中毒吃什么药解毒| 拉黑和删除有什么区别| 打火机的气体是什么| 乙肝核心抗体是什么意思| 苏菲是什么意思| 什么网站可以看毛片| 宝宝发烧是什么原因引起的| 舅舅是什么关系| 啃老是什么意思| 低血压低是什么原因| 什么叫口腔溃疡| 哭笑不得是什么意思| 低聚糖是什么| 这是什么动物| 乔治阿玛尼和阿玛尼有什么区别| 念叨是什么意思| 内衣34是什么码| 单核细胞是什么意思| 2018年属什么| 12月1日是什么意思| 项羽为什么会失败| gb10769是什么标准| 桃李满天下什么意思| 尼日利亚说什么语言| 三十七岁属什么生肖| 米粉用什么做的| 什么水果去火效果最好| 沙茶酱做什么菜最好吃| 小狗肚子里有虫子吃什么药| 莜面是什么面| 岁贡生是什么意思| 印度人信仰什么教| 吃什么能长胖| 耳垂后面有痣代表什么| 鲜黄花菜含有什么毒素| 故意不接电话说明什么| 肚子中间疼是什么原因| 什么是规培生| 红和绿混合是什么颜色| 出品人是干什么的| 1111是什么意思| 脑供血不足什么原因引起的| 健脾去湿吃什么药| 1994年属什么| 14年属什么| 什么是山海经| 酒后大量出虚汗什么原因| 夫妻肺片是什么肉| 勃而不坚吃什么药| 去取环前需做什么准备| 点痣后要注意什么| 东北大拉皮是什么做的| 螺旋ct检查什么| 准确值是什么意思| 推油是什么意思| 梦见别人流血是什么预兆| 睾丸炎用什么药| 午时银花露有什么功效| g6pd是检查什么的| 做水果捞用什么酸奶好| 上眼皮浮肿是什么原因| 破日是什么意思| 中暑喝什么药| 阳虚什么症状| 黑苦荞茶有什么功效| 吃什么排肝毒最快| 威海的海是什么海| 吃护肝片有什么副作用| 阴囊湿疹是什么原因造成的| 吃什么可以化掉息肉| 什么是有意义的东西| 孕妇快生的时候有什么征兆| 成什么结什么| igg是什么意思| urban是什么牌子| 安全总监是什么级别| 类风湿性关节炎用什么药| 感知力是什么意思| 莞尔一笑什么意思| 桑葚补什么| csv文件用什么打开| 10月28号是什么星座| 猪油不凝固是什么原因| 草莓像什么| 双肺呼吸音粗是什么意思| 抖s什么意思| 婴儿为什么喜欢趴着睡| 平步青云什么意思| 直肠炎吃什么药效果好| 星月菩提五行属什么| 糜烂型脚气用什么药最好| acl是什么意思| 急性支气管炎吃什么药| 血管性头痛吃什么药| 小孩肚脐眼上面疼是什么原因| 行政许可是什么意思| 鼻涕带血是什么原因引起的| 什么治失眠最有效| 胆红素偏高是什么意思| 不可什么什么| 吃什么发胖最快| 在水一方什么意思| 螳螂捕蝉是什么意思| 为什么会湿气重| 贤侄是什么意思| 柠檬吃多了有什么坏处| 白露是什么季节| 右肺中叶少许纤维灶是什么意思| 什么除草剂三年不长草| 房间为什么有蟑螂| 梦见捡了好多钱是什么预兆| 产后42天复查挂什么科| 处女座是什么| 曲高和寡什么意思| 什么是ts| 脚痒用什么药膏最有效| 早上左眼跳是什么预兆| 宫缩是什么感觉| 什么叫低级别上皮内瘤变| 皮疹长什么样| 衣柜放什么代替樟脑丸| 甘油三酯偏高说明什么| 医院院长是什么级别| 皮下脂肪瘤挂什么科| 副产品是什么意思| ic是什么意思| 离岸人民币什么意思| 尿多是什么原因男性| 阴阳代表什么数字| 手上长痣代表什么| 壅是什么意思| 8.26是什么星座| 什么是气胸有什么症状| 舌苔厚腻发白是什么原因| 手淫过度吃什么药调理| 华西医院院长什么级别| 消肿用什么药| 肾萎缩是什么原因引起的| 经期血块多是什么原因| 手足口一般擦什么药膏| 三月二十八号是什么星座| 脂蛋白a是什么意思| 舌苔黄厚吃什么药| 人授和试管有什么区别| mm什么意思| 乳和霜有什么区别| 办电话卡需要什么| 什么减肥最好最快| 分娩是什么意思| 腿脚浮肿是什么原因引起的| 星座上升是什么意思| 楼台是什么意思| 水手服是什么| 牙痛吃什么药最管用| 985高校是什么意思| 陪护是什么意思| SEX是什么| 什么高什么长| 无中生有是什么意思| 梦见喜欢的人代表什么| 卡介疫苗是预防什么的| 孩子喉咙痛吃什么药好| 见血是什么兆头| 每天经常放屁什么原因| 豆乳是什么| 停胎是什么原因造成的| 墨池为什么不爱柔嘉了| 什么网站可以看三节片| 什么样的男人不能嫁| gb什么意思| 蜗牛吃什么东西| 脑炎的后遗症是什么| 百香果有什么好处功效| 什么是血友病| 吃鱼生后吃什么打虫药| 下腹隐隐作痛什么原因| 什么是小暑| 王莲是什么植物| 涅盘什么意思| 想飞上天和太阳肩并肩是什么歌| 把妹是什么意思| 陆陆续续是什么意思| apk是什么格式| 2021年属什么生肖| 忠贞不渝是什么意思| 印度人为什么不吃猪肉| 改编是什么意思| 92年什么命| 尿酸高适合吃什么菜| 补体c3偏低是什么意思| 慈禧属什么生肖| 更年期挂什么科| 1212是什么星座| 毒瘾为什么那么难戒| 吃什么能丰胸| 今年是什么年天干地支| 氧分压高是什么原因| 晚上睡觉咬牙齿是什么原因| 眉毛稀少是什么原因| 字母圈是什么意思| 云南白药里的保险子有什么作用| 免费查五行缺什么| 桃和什么不能一起吃| 抗核抗体是什么| 三点水弘读什么| pa是什么材料| 脱脂牛奶是什么意思| 子宫内膜粘连有什么症状| 1930年属什么| 麻醉评估是什么意思| 什么是品牌| 空囊是什么原因造成的| domyos是什么牌子| 亩产是什么意思| 小腿为什么会抽筋| 我国计划生育什么时候开始| 85年属牛是什么命| 酸碱度是什么意思| 吉人天相好福气指什么生肖| 吃牛油果有什么好处| 大熊猫为什么有黑眼圈| 痛经吃什么| 紧急避孕药对身体有什么伤害| 火棉胶婴儿是什么意思| 重度脂肪肝吃什么药| 什么是黄体酮| 舌根发硬是什么原因| 芸豆是什么| 宝石蓝是什么颜色| 石楠花是什么味道| 无纺布是什么| 胃饱胀是什么原因| 看胸挂什么科| 五步蛇为什么叫五步蛇| 作灶什么意思| 手控是什么意思| 低聚木糖是什么| 咖啡soe是什么意思| 九月份什么星座| 坪效是什么意思| 扁桃体经常发炎是什么原因| 螳螂捕蝉黄雀在后是什么生肖| 猪沙肝是什么部位| 怀孕前三个月应该注意什么| 脂溢性脱发用什么洗发水好| 什么是黄体期| 女生月经迟迟不来是什么原因| 口是什么感觉| 大基数是什么意思| 完了是什么意思| 中医把脉能看出什么| 甲减是什么| 三分钟热度是什么意思| 阿哥是什么意思| 八年是什么婚| 什么门永远关不上| 嘬是什么意思| 每天吃鸡蛋有什么好处和坏处| 梦见捞鱼是什么意思| 送枕头代表什么意思| 莘字五行属什么| 为什么要分手| 百度
Skip to content

面试官:vue项目如何部署?有遇到布署服务器后刷新404问题吗??#31

@febobo

Description

@febobo

image.png

一、如何部署

前后端分离开发模式下,前后端是独立布署的,前端只需要将最后的构建物上传至目标服务器的web容器指定的静态目录下即可

我们知道vue项目在构建后,是生成一系列的静态文件

常规布署我们只需要将这个目录上传至目标服务器即可

// scp 上传 user为主机登录用户,host为主机外网ip, xx为web容器静态资源路径
scp dist.zip user@host:/xx/xx/xx

web容器跑起来,以nginx为例

server {
  listen  80;
  server_name  www.xxx.com;

  location / {
    index  /data/dist/index.html;
  }
}

配置完成记得重启nginx

// 检查配置是否正确
nginx -t 

// 平滑重启
nginx -s reload

操作完后就可以在浏览器输入域名进行访问了

当然上面只是提到最简单也是最直接的一种布署方式

什么自动化,镜像,容器,流水线布署,本质也是将这套逻辑抽象,隔离,用程序来代替重复性的劳动,本文不展开

二、404问题

这是一个经典的问题,相信很多同学都有遇到过,那么你知道其真正的原因吗?

我们先还原一下场景:

  • vue项目在本地时运行正常,但部署到服务器中,刷新页面,出现了404错误

先定位一下,HTTP 404 错误意味着链接指向的资源不存在

问题在于为什么不存在?且为什么只有history模式下会出现这个问题?

为什么history模式下有问题

Vue是属于单页应用(single-page application)

SPA是一种网络应用程序或网站的模型,所有用户交互是通过动态重写当前页面,前面我们也看到了,不管我们应用有多少页面,构建物都只会产出一个index.html

现在,我们回头来看一下我们的nginx配置

server {
  listen  80;
  server_name  www.xxx.com;

  location / {
    index  /data/dist/index.html;
  }
}

可以根据 nginx 配置得出,当我们在地址栏输入 www.xxx.com 时,这时会打开我们 dist 目录下的 index.html 文件,然后我们在跳转路由进入到 www.xxx.com/login

关键在这里,当我们在 website.com/login 页执行刷新操作,nginx location 是没有相关配置的,所以就会出现 404 的情况

为什么hash模式下没有问题

router hash 模式我们都知道是用符号#表示的,如 website.com/#/login, hash 的值为 #/login

它的特点在于:hash 虽然出现在 URL 中,但不会被包括在 HTTP 请求中,对服务端完全没有影响,因此改变 hash 不会重新加载页面

hash 模式下,仅 hash 符号之前的内容会被包含在请求中,如 website.com/#/login 只有 website.com 会被包含在请求中 ,因此对于服务端来说,即使没有配置location,也不会返回404错误

解决方案

看到这里我相信大部分同学都能想到怎么解决问题了,

产生问题的本质是因为我们的路由是通过JS来执行视图切换的,

当我们进入到子路由时刷新页面,web容器没有相对应的页面此时会出现404

所以我们只需要配置将任意页面都重定向到 index.html,把路由交由前端处理

nginx配置文件.conf修改,添加try_files $uri $uri/ /index.html;

server {
  listen  80;
  server_name  www.xxx.com;

  location / {
    index  /data/dist/index.html;
    try_files $uri $uri/ /index.html;
  }
}

修改完配置文件后记得配置的更新

nginx -s reload

这么做以后,你的服务器就不再返回 404 错误页面,因为对于所有路径都会返回 index.html 文件

为了避免这种情况,你应该在 Vue 应用里面覆盖所有的路由情况,然后在给出一个 404 页面

const router = new VueRouter({
  mode: 'history',
  routes: [
    { path: '*', component: NotFoundComponent }
  ]
})

关于后端配置方案还有:Apachenodejs等,思想是一致的,这里就不展开述说了

参考文献

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions

      吃多了拉肚子是什么原因 神仙眷侣是什么意思 1215是什么星座 争辩的近义词是什么 精子为什么叫怂
      杜甫是什么朝代的 人体缺甲是什么症状 身上长很多痣是什么原因 益母草能治什么病 吃中药忌口都忌什么
      浸猪笼是什么意思 处是什么结构 璀璨人生是什么意思 6月23日是什么节日 后背长痘是什么原因
      勿忘心安是什么意思 为什么会乳糖不耐受 农历六月初七是什么星座 梦到头发长长了是什么意思 前列腺吃什么食物调理
      八戒是什么意思hcv8jop9ns8r.cn 优五行属性是什么hcv8jop6ns9r.cn 芥花油是什么油hcv7jop7ns4r.cn 减肥能吃什么零食hcv9jop5ns5r.cn 假酒喝了有什么症状520myf.com
      减肥医院挂什么科hcv8jop8ns2r.cn 梦到鱼是什么意思hcv8jop6ns2r.cn 龙日冲狗煞南是什么意思gangsutong.com 蒸鱼豉油是什么aiwuzhiyu.com 什么食物利尿hcv8jop5ns0r.cn
      荨麻疹是什么原因引起hcv9jop4ns2r.cn 风疹吃什么药hcv8jop2ns8r.cn 喝酒后头晕是什么原因bjcbxg.com 肺部纤维灶是什么意思hcv7jop4ns8r.cn 肩胛骨痛挂什么科hcv8jop4ns0r.cn
      logo中文是什么意思hcv8jop1ns7r.cn 长命百岁是什么意思hcv7jop6ns4r.cn 臀纹不对称有什么影响hcv8jop4ns5r.cn 小狗吃什么travellingsim.com 月经不停吃什么药hcv9jop1ns6r.cn
      百度