The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
jizhihaoSAMA

不使用 nginx, vue.js 如何和 gin 组合后部署到服务器上面?

  •  
  •   jizhihaoSAMA · Aug 27, 2020 · 4727 views
    This topic created in 2091 days ago, the information mentioned may be changed or developed.

    自己尝试着做一个前后端分离的小项目,前端 vuejs 后端 gin, 我之前一直以为前后端路由在服务器上面都开着然后进行访问。最近试了下 vue.js 的部署,发现 vuejs 直接打包过去不行,网上说是要 npm run build 打包成静态网页。 网上搜了一下,知乎上面有这个问题: https://www.zhihu.com/question/46630687

    相关的是说要用 nginx 。

    有没有不用 nginx 的方法?

    11 replies    2020-09-09 20:34:26 +08:00
    rrfeng
        1
    rrfeng  
       Aug 27, 2020   ❤️ 1
    gin.ServeStatic() 之类的
    yaphets666
        2
    yaphets666  
       Aug 27, 2020
    nginx 主要解决跨域问题和负载均衡.你这不存在负载均衡.但是你不用 nginx 怎么解决跨域问题呢? 不解决跨域问题当然不行啊 接口都访问不了. 还有你 vue 项目中的静态文件的引用路径 这都是问题
    XCFOX
        3
    XCFOX  
       Aug 27, 2020   ❤️ 1
    你还可以用 caddy https://caddyserver.com/
    比 nginx 方便很多,还能自动 https
    jizhihaoSAMA
        4
    jizhihaoSAMA  
    OP
       Aug 27, 2020
    @yaphets666 跨域问题通过 gin 已经解决了。我在本地上 前端路由跑 8080 端口,后端跑 8081 端口,设置好跨域问题后是能够正常进行交互的
    maichael
        5
    maichael  
       Aug 27, 2020
    ……,静态文件要解决啥跨域问题,你后端路由直接指向静态文件不就好了?后端的接口就前缀加 api 之类的。
    saltbo
        6
    saltbo  
       Aug 27, 2020   ❤️ 1
    这个最佳实践是开发环境在 vue.config.js 配置 web-dev-server 来代理后端接口。 生产环境通过 gin 来挂载静态文件。当然,更好的方式是直接嵌入到 go 源码中。可以参考我正在做的开源项目 zpan

    https://github.com/saltbo/zpan
    https://github.com/saltbo/zpan-front

    master 比较老了,develop 分支正在重构中...
    MrTreasure
        7
    MrTreasure  
       Aug 27, 2020   ❤️ 1
    服务端的接口统一挂到路由 /api 下面

    gin 开启一个静态服务地址,把除了 /api 接口的请求都重定向到这里,静态服务里面就放 vue 打包后的产物。以后前端更新就跑脚本直接替换就行了。
    这样做的好处就是没有跨域问题了
    lavvrence
        8
    lavvrence  
       Aug 27, 2020   ❤️ 1
    本质上还是需要一个 HTTP 服务器嘛。不用 Nginx 很方便,还是推荐使用。跨域问题放 gin 下托管到 /api 没问题,但其实更好的解决方案是浏览器 cors 吧。前后端都分离了,没必要放一起。
    JerryCha
        9
    JerryCha  
       Aug 27, 2020
    那就在 server 跑 dev 模式(逃
    jizhihaoSAMA
        10
    jizhihaoSAMA  
    OP
       Aug 29, 2020
    @JerryCha 有轮子哥那味了
    stone981023
        11
    stone981023  
       Sep 9, 2020
    @yaphets666 你在同一个 URL 下不会有跨域问题的, 都是 Gin 分配的路由 ,协议, url 端口号 都一样的
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5745 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 43ms · UTC 02:22 · PVG 10:22 · LAX 19:22 · JFK 22:22
    ♥ Do have faith in what you're doing.