Caddy 部署前端的坑
date
Jan 16, 2023
slug
caddy-deploy-fe
status
Published
tags
Caddy
summary
将前端项目 build 后产生的静态文件放置在 caddy 的 file_server 目录下,浏览器访问不是网站根目录是 caddy 会返回 404。
type
Post
将前端项目 build 后产生的静态文件放置在 caddy 的 file_server 目录下,浏览器访问不是网站根目录时 caddy 会返回 404。
产生问题的配置
:80 {
root * /usr/share/caddy
file_server
reverse_proxy /api/* 127.0.0.1:8080
}这样配置,访问
http://<ip> 能正常显示,但是访问 http://<ip>/xxxx caddy 就返回 404 了。依然会存在其他问题的解决方案
:80 {
root * /usr/share/caddy
file_server
reverse_proxy /api/* 127.0.0.1:8080
rewrite /* /
}后来他翻官方文档时找到了一个
try_files 指令,也能非常简单地解决这个问题::80 {
root * /usr/share/caddy
file_server
reverse_proxy /api/* 127.0.0.1:8080
try_files {path} /index.html
}又又又出现了问题,然后再再再解决
按照依然会存在其他问题的解决方案,请求后端依然会请求
/index.html(换句话说就是后端的路径也 rewrite 到前端了)。原因可能是 caddy 指令顺序的问题,try_files 指令在 reverse_proxy 指令前面,所以得用两个同级的 block 去区分它们,使它们这两个指令同级::80 {
root * /usr/share/caddy/dist
handle /api/* {
reverse_proxy /api/* 100.101.152.29:8080
}
handle * {
try_files {path} /index.html
file_server
}
}