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性能方面需要進一步提升以及接收更多實踐的考驗
  • 其它進一步實踐吧
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章