Golang Go语言中不使用nginx,vue.js如何和gin组合后部署到服务器上面?
Golang Go语言中不使用nginx,vue.js如何和gin组合后部署到服务器上面?
自己尝试着做一个前后端分离的小项目,前端 vuejs 后端 gin, 我之前一直以为前后端路由在服务器上面都开着然后进行访问。最近试了下 vue.js 的部署,发现 vuejs 直接打包过去不行,网上说是要 npm run build 打包成静态网页。 网上搜了一下,知乎上面有这个问题: https://www.zhihu.com/question/46630687
相关的是说要用 nginx 。
有没有不用 nginx 的方法?
更多关于Golang Go语言中不使用nginx,vue.js如何和gin组合后部署到服务器上面?的实战教程也可以访问 https://www.itying.com/category-94-b0.html
gin.ServeStatic() 之类的
更多关于Golang Go语言中不使用nginx,vue.js如何和gin组合后部署到服务器上面?的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
nginx 主要解决跨域问题和负载均衡.你这不存在负载均衡.但是你不用 nginx 怎么解决跨域问题呢? 不解决跨域问题当然不行啊 接口都访问不了. 还有你 vue 项目中的静态文件的引用路径 这都是问题
跨域问题通过 gin 已经解决了。我在本地上 前端路由跑 8080 端口,后端跑 8081 端口,设置好跨域问题后是能够正常进行交互的
……,静态文件要解决啥跨域问题,你后端路由直接指向静态文件不就好了?后端的接口就前缀加 api 之类的。
这个最佳实践是开发环境在 vue.config.js 配置 web-dev-server 来代理后端接口。 生产环境通过 gin 来挂载静态文件。当然,更好的方式是直接嵌入到 go 源码中。可以参考我正在做的开源项目 zpan
https://github.com/saltbo/zpan
https://github.com/saltbo/zpan-front
master 比较老了,develop 分支正在重构中…
本质上还是需要一个 HTTP 服务器嘛。不用 Nginx 很方便,还是推荐使用。跨域问题放 gin 下托管到 /api 没问题,但其实更好的解决方案是浏览器 cors 吧。前后端都分离了,没必要放一起。
那就在 server 跑 dev 模式(逃
有轮子哥那味了
你在同一个 URL 下不会有跨域问题的, 都是 Gin 分配的路由 ,协议, url 端口号 都一样的
在Go语言中,如果你不使用Nginx,但仍希望将Vue.js前端与Gin后端组合并部署到服务器上,可以采用以下步骤:
-
构建Vue.js前端:
- 使用
npm run build
或yarn build
命令构建Vue.js项目,生成dist
目录,其中包含所有静态文件(HTML、CSS、JS)。
- 使用
-
集成到Gin后端:
- 在Gin后端项目中,创建一个静态文件服务中间件,将Vue.js生成的
dist
目录作为静态文件目录。 - 例如,可以使用
http.FileServer
和http.StripPrefix
来服务静态文件。 - 配置路由,使得所有非API请求都重定向到Vue.js的
index.html
,实现前端路由。
- 在Gin后端项目中,创建一个静态文件服务中间件,将Vue.js生成的
-
编译并运行Go程序:
- 编译你的Go程序,确保它包含对静态文件的服务逻辑。
- 运行编译后的Go二进制文件,它将同时作为后端API服务器和前端静态文件服务器。
-
部署到服务器:
- 将编译后的Go二进制文件以及Vue.js的
dist
目录上传到服务器。 - 配置服务器(如使用systemd服务或supervisord)以在系统启动时自动运行Go程序。
- 确保服务器防火墙和端口配置允许外部访问你的应用。
- 将编译后的Go二进制文件以及Vue.js的
这种方法避免了使用Nginx作为反向代理,而是直接在Go程序中处理前端静态文件的服务和路由。这对于小型项目或希望简化部署流程的场景特别有用。