博客 / 詳情

返回

一個非常輕量的靜態資源服務器 (二)

上期文章
一個非常輕量的靜態資源服務器 (一)


時隔一年多,最近工作,遇到了新的想法,部署靜態資源的時候,不可避免需要請求後端,為了方便,新增了一個API代理轉發功能。

緊接着一年前的運行示例,下面的API代理轉發的參數,只有1個參數,proxy。配置路徑和轉發地址後,在靜態頁面裏請求相關路徑,就會全部轉發至配置的地址上,並且支持websocket。

  1. API代理

有時候,後端可能部署在其他域名下,直接訪問存在跨域,跨域通過API代理,來規避跨域

docker run -ti --rm --init \
   -p 80:80 \
   ikrong/mini-http \
   /serve \
     --domain localhost \
     --proxy /api:https://example.com/api
proxy 參數跨域配置請求路徑 /api 下的所有路徑全部重定向到 https://example.com/api 路徑下

另外在使用的過程中,當設置了其他端口,比如 8944,並且配置為https訪問,理論上需要將地址寫為 https://localhost:8944 但是,經常被錯誤寫為 http://localhost:8944。這個時候,響應就會出現一個頁面錯誤:Client sent an HTTP request to an HTTPS server.

這個錯誤很不友好,我覺得既然服務知道自己的https,就應該重定向至https協議,允許用户犯錯,所以,又增加了一個以http協議訪問https端口時,自動重定向的功能。這個不需要參數,強制重定向的。

具體代碼實現有點長,具體可以看Github代碼倉庫。

需要注意,這個功能和80端口重定向至443端口是不一樣的,目前不支持80重定向443。


最後,再回顧一下目前這個靜態服務器支持的所有功能

  • 支持靜態資源訪問
  • 單頁面路由
  • 支持端口自定義
  • 支持https配置
  • 支持多域名配置
  • 支持自定義404頁面
  • 支持gzip
  • 支持api代理

如果,你也有想法,可以告訴我,我來加!

user avatar
0 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.