# 前后端分离

# 伪前后端分离(默认)

Torna默认部署方式跟前后端分离有些类似,并不是用Nginx服务器来代理前端,而是用Torna自身服务器(SpringBoot内置服务器)来代理前端页面。原理是利用SpringBoot本地资源映射的方式org.springframework.web.servlet.config.annotation.WebMvcConfigurer#addResourceHandlers,具体代码详见:cn.torna.web.config.WebConfig#addResourceHandlers

因此称之为伪前后端分离

Torna的部署目录如下:

torna                           # 根目录
├── application.properties      # 配置文件
├── dist                        # 前端资源
├── debug.sh                    # 线上调试
├── shutdown.sh                 # 结束服务脚本
├── startup.sh                  # 启动服务脚本
└── torna.jar                   # 服务程序

应用启动时会寻找当前目录下有没有dist文件夹,如果有,则认作是前端资源。

如果前端资源是放在另外的目录,则需要手动指定目录

application.properties中配置:

# 前端本地全路径,如:/home/front
torna.front-location=/home/xx/dist

指定后,服务启动时会把/home/xx/dist目录当做前端资源。

这是Torn默认的部署方式,这样可以单独替换前后端文件,互不干扰,好处是只需要访问服务端IP端口即可,可以理解为前后端是一个整体。

# 使用Nginx做前后端分离

如果用Nginx部署前端资源,并且反向代理后端程序,部署方式如下:

假设前端页面请求URL是:http://tornafront.xxx.com --> 映射本地目录/admin/tornafront

后端服务请求URL:http://tornaserver.xxx.com --> 反向代理本地服务:127.0.0.1:7700

修改front/.env.production文件,指定后端URL,VUE_APP_BASE_API = 'http://tornaserver.xxx.com',然后构建前端项目

把dist下的所有内容放到/admin/tornafront

最终结构为:

tornafront/
├── favicon.ico
├── index.html
└── static

添加配置:

# 指定前端域名,到端口号,末尾没有/
# 如:http://ip:9530,http://front.xxxx.com
torna.front-host=httt://tornafront.xxx.com

启动后端服务,然后浏览器访问:http://tornafront.xxx.com