nginx部署多个前端项目
前端采用vue框架,主要介绍在同一个
ip+port
下(或域名),通过访问不同的子路径部署多个项目
把前端打包好的项目直接放进 nginx/html
目录下面,
路由采用hash模式
浏览器访问的时候在url后面拼接上要访问的项目子路径即可,会由vue-router
接管路由(hash模式),后面的路径跳转、资源访问的操作也都会在子路径下处理,nginx配置很简单。
nginx/nginx.conf
文件的部分配置如下:
1 | server { |
浏览器访问:
https://www.axample.com/lily/
->https://www.axample.com/lily/#/home
https://www.axample.com/mimosa/
->https://www.axample.com/mimosa/#/home
路由采用的都是history模式
不同于 hash模式,History 模式需要服务器的支持,还是通过访问不同的子路径部署多个项目,当浏览器访问项目的时候,会把子路径带上去请求资源,存在找不到资源的情况,所以需要在应用路径和nginx配置上做修改。
1、router.js设置
1 | new Router({ |
base
是应用的基路径,默认值: “/“。
例如,如果整个单页应用服务在 /app/
下,然后 base
就应该设为 /app/
。
2、vue.config.js修改publicPath
如果只修改了router的设置,没有修改
publicPath
,浏览器地址栏键入https://www.axample.com/lily/
首次进入由于vue-router
设置的redirect
会重定向到首页地址,正常显示网页,但是再次刷新的时候,浏览器请求的是重定向过后的地址,静态文件地址指向错乱,404
一般来说就是配置和真实的路径不符合,需要指定try_files
1 | publicPath: IS_PROD ? '/lily/' : '/', // 公共路径 |
publicPath用法:
publicPath
: 部署应用包时的基本 URL,用法和 webpack
本身的 output.publicPath
一致,
但是 Vue CLI
在一些其他地方也需要用到这个值,所以为了保持统一,直接修改 publicPath
而不要直接修改 webpack
的 output.publicPath
。
- 默认情况下,
Vue CLI
会假设你的应用是被部署在一个域名的根路径上,
例如 https://www.my-app.com/
。
- 如果应用被部署在一个子路径上,你就需要用这个选项指定这个子路径。
例如,如果你的应用被部署在 https://www.my-app.com/my-app/
,则设置 publicPath
为 /my-app/
。
3、nginx设置
增加子应用的配置
1 | # 443端口配置 |
浏览器访问:
https://www.axample.com/lily/
https://www.axample.com/mimosa/
小结
上面讲解了通过访问不同的子路径部署多个前端项目,并结合vue-router
的不同路由模式,给出不同的配置。
nginx方面的配置是写在同一个 server
块下的,通过 location
去分发。
也可以通过域名+端口的配置,实现部署多个前端项目,这个时候就需要添加不同的server
块配置了,感兴趣的小伙伴可以自己尝试一下🎁
我是 甜点cc,个人网站: https://blog.i-xiao.space/
做人做事在于扬长而不是补短
公众号:【看见另一种可能】