Caddy代理SpringBoot Fatjar應用上傳靜態資源

簡述

基於SpringBoot框架開發的WEB應用,其中包含了數據服務接口,管理端UI。在打包的時候採用All In One的方式打成一個fatjar或者war 最終經過java -jar app.jar或者java -jar app.war的方式運行程序,程序內置Tomcat容器。java

問題

應用中有用戶上傳的圖片,音頻等文件,這些文件存儲在本地磁盤 好比:D:\static目錄,經過圖片的相對地址與服務地址組成的url是沒法訪問的資源的。nginx

在Tomcat容器中部署應用的時候,app.war是會被自動解壓的,上傳的資源文件在webapp目錄下是能夠正常訪問。golang

目前的方式是fatjar,因此就須要經過WEB服務器來進行反向代理解決該問題。web

服務器

比較流行的WEB服務器例如Apache Nginx IIS Squid。文中選擇基於golang開發的服務器caddyapache

Caddy是一款清新脫俗的WEB服務器。服務器

配置

Caddy的配置很是簡單並且文檔也很是簡潔清晰。app

下面是解決文中問題的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    
    }   
}

說明:webapp

  • root 工做目錄以及靜態資源目錄
  • proxy 全部請求轉發到8081端口的服務上
  • proxy 下的 except /media 即就是上傳資源的訪問前綴,意思是排查掉該前綴的請求,不作轉發,所以請求到上傳資源就直接在root配置的目錄下查找。

總結

  • Caddy做爲新興的WEB服務器,在配置上相對的nginx apache簡化不少
  • Caddy基於HTTP/2的WEB服務器,自動支持HTPPS
  • Caddy也是插件化開發,能夠輕鬆定製開發
  • Caddy性能方面須要進一步提高以及接收更多實踐的考驗
  • 其它進一步實踐吧
相關文章
相關標籤/搜索