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

12 回复

gin.ServeStatic() 之类的

更多关于Golang Go语言中不使用nginx,vue.js如何和gin组合后部署到服务器上面?的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


nginx 主要解决跨域问题和负载均衡.你这不存在负载均衡.但是你不用 nginx 怎么解决跨域问题呢? 不解决跨域问题当然不行啊 接口都访问不了. 还有你 vue 项目中的静态文件的引用路径 这都是问题

你还可以用 caddy https://caddyserver.com/
比 nginx 方便很多,还能自动 https

跨域问题通过 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 分支正在重构中…

服务端的接口统一挂到路由 /api 下面

gin 开启一个静态服务地址,把除了 /api 接口的请求都重定向到这里,静态服务里面就放 vue 打包后的产物。以后前端更新就跑脚本直接替换就行了。
这样做的好处就是没有跨域问题了

本质上还是需要一个 HTTP 服务器嘛。不用 Nginx 很方便,还是推荐使用。跨域问题放 gin 下托管到 /api 没问题,但其实更好的解决方案是浏览器 cors 吧。前后端都分离了,没必要放一起。

那就在 server 跑 dev 模式(逃

有轮子哥那味了

你在同一个 URL 下不会有跨域问题的, 都是 Gin 分配的路由 ,协议, url 端口号 都一样的

在Go语言中,如果你不使用Nginx,但仍希望将Vue.js前端与Gin后端组合并部署到服务器上,可以采用以下步骤:

  1. 构建Vue.js前端

    • 使用npm run buildyarn build命令构建Vue.js项目,生成dist目录,其中包含所有静态文件(HTML、CSS、JS)。
  2. 集成到Gin后端

    • 在Gin后端项目中,创建一个静态文件服务中间件,将Vue.js生成的dist目录作为静态文件目录。
    • 例如,可以使用http.FileServerhttp.StripPrefix来服务静态文件。
    • 配置路由,使得所有非API请求都重定向到Vue.js的index.html,实现前端路由。
  3. 编译并运行Go程序

    • 编译你的Go程序,确保它包含对静态文件的服务逻辑。
    • 运行编译后的Go二进制文件,它将同时作为后端API服务器和前端静态文件服务器。
  4. 部署到服务器

    • 将编译后的Go二进制文件以及Vue.js的dist目录上传到服务器。
    • 配置服务器(如使用systemd服务或supervisord)以在系统启动时自动运行Go程序。
    • 确保服务器防火墙和端口配置允许外部访问你的应用。

这种方法避免了使用Nginx作为反向代理,而是直接在Go程序中处理前端静态文件的服务和路由。这对于小型项目或希望简化部署流程的场景特别有用。

回到顶部