Caddy代理SpringBoot Fatjar应用上传静态资源
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Caddy代理SpringBoot Fatjar应用上传静态资源相关的知识,希望对你有一定的参考价值。
简述
基于SpringBoot框架开发的WEB应用,其中包含了数据服务接口,管理端UI。在打包的时候采用All In One
的方式打成一个fatjar或者war
最终通过java -jar app.jar
或者java -jar app.war
的方式运行程序,程序内置Tomcat容器。
问题
应用中有用户上传的图片,音频等文件,这些文件存储在本地磁盘 比如:D:\static
目录,通过图片的相对地址与服务地址组成的url
是无法访问的资源的。
在Tomcat容器中部署应用的时候,app.war
是会被自动解压的,上传的资源文件在webapp
目录下是可以正常访问。
目前的方式是fatjar
,所以就需要通过WEB服务器来进行反向代理解决该问题。
服务器
比较流行的WEB服务器例如Apache nginx IIS Squid
。文中选择基于golang
开发的服务器caddy
。
Caddy是一款清新脱俗的WEB服务器。
配置
Caddy的配置非常简单而且文档也非常简洁清晰。
下面是解决文中问题的Caddy配置文件,Caddy配置文件默认名为Caddyfile
127.0.0.1:80 {
gzip {
}
log D:\logs\access_server.log {
rotate_size 10
rotate_age 10
rotate_keep 20
}
root D:\static
proxy / http://127.0.0.1:8081 {
fail_timeout 30s
max_fails 2
max_conns 50
keepalive 50
except /media
}
}
说明:
- root 工作目录以及静态资源目录
- proxy 所有请求转发到8081端口的服务上
- proxy 下的 except /media 即就是上传资源的访问前缀,意思是排查掉该前缀的请求,不做转发,因此请求到上传资源就直接在root配置的目录下查找。
总结
- Caddy作为新兴的WEB服务器,在配置上相对的
nginx apache
简化很多 - Caddy基于HTTP/2的WEB服务器,自动支持HTPPS
- Caddy也是插件化开发,可以轻松定制开发
- Caddy性能方面需要进一步提升以及接收更多实践的考验
- 其它进一步实践吧
以上是关于Caddy代理SpringBoot Fatjar应用上传静态资源的主要内容,如果未能解决你的问题,请参考以下文章
在docker中使用caddy和trojan-go搭建网络代理服务
The Caddy Web Server 常见 Caddyfile 模式