簡述
基於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性能方面需要進一步提升以及接收更多實踐的考驗
- 其它進一步實踐吧