From c04f6003328c2494a852a5402a4345ba9343c654 Mon Sep 17 00:00:00 2001 From: wood chen Date: Sun, 22 Jun 2025 12:53:27 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0favicon=E6=94=AF=E6=8C=81?= =?UTF-8?q?=EF=BC=8C=E6=9B=B4=E6=96=B0docker-compose=E9=85=8D=E7=BD=AE?= =?UTF-8?q?=E4=BB=A5=E6=8C=82=E8=BD=BDfavicon=E7=9B=AE=E5=BD=95=EF=BC=8C?= =?UTF-8?q?=E5=B9=B6=E5=9C=A8=E4=B8=BB=E7=A8=8B=E5=BA=8F=E4=B8=AD=E5=AE=9E?= =?UTF-8?q?=E7=8E=B0favicon.ico=E5=A4=84=E7=90=86=E5=99=A8=EF=BC=8C?= =?UTF-8?q?=E6=8F=90=E4=BE=9B=E8=87=AA=E5=AE=9A=E4=B9=89favicon=E5=8A=9F?= =?UTF-8?q?=E8=83=BD=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docker-compose.yml | 1 + favicon/.gitkeep | 2 ++ favicon/README.md | 32 ++++++++++++++++++++++++++++++++ go.mod | 10 ++++------ go.sum | 2 -- main.go | 19 +++++++++++++++++++ 6 files changed, 58 insertions(+), 8 deletions(-) create mode 100644 favicon/.gitkeep create mode 100644 favicon/README.md diff --git a/docker-compose.yml b/docker-compose.yml index b931a36..54ee105 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -6,6 +6,7 @@ services: - "3336:3336" volumes: - ./data:/app/data + - ./favicon:/app/favicon environment: - TZ=Asia/Shanghai - OAUTH_CLIENT_ID=your_client_id diff --git a/favicon/.gitkeep b/favicon/.gitkeep new file mode 100644 index 0000000..0688f5a --- /dev/null +++ b/favicon/.gitkeep @@ -0,0 +1,2 @@ +# 这个文件确保 favicon 目录被 git 跟踪 +# 用户可以在这个目录中放置自定义的 favicon.ico 文件 \ No newline at end of file diff --git a/favicon/README.md b/favicon/README.md new file mode 100644 index 0000000..1c5a96e --- /dev/null +++ b/favicon/README.md @@ -0,0 +1,32 @@ +# Favicon 自定义设置 + +## 使用方法 + +1. 将你的 favicon 文件重命名为 `favicon.ico` +2. 放置在这个 `favicon` 目录中 +3. 重启 proxy-go 服务 + +## 支持的文件格式 + +- `.ico` 文件(推荐) +- `.png` 文件(需要重命名为 favicon.ico) +- `.jpg/.jpeg` 文件(需要重命名为 favicon.ico) +- `.svg` 文件(需要重命名为 favicon.ico) + +## 注意事项 + +- 文件必须命名为 `favicon.ico` +- 推荐尺寸:16x16, 32x32, 48x48 像素 +- 如果没有放置文件,将返回 404(浏览器会使用默认图标) + +## 示例 + +```bash +# 将你的 favicon 文件复制到这个目录 +cp your-favicon.ico ./favicon/favicon.ico + +# 重启服务 +docker-compose restart +``` + +现在访问 `http://your-domain.com/favicon.ico` 就会显示你的自定义 favicon 了! \ No newline at end of file diff --git a/go.mod b/go.mod index 4a79ee2..4a929fb 100644 --- a/go.mod +++ b/go.mod @@ -1,15 +1,13 @@ module proxy-go -go 1.24 +go 1.23.0 -toolchain go1.24.4 +toolchain go1.23.1 require ( github.com/andybalholm/brotli v1.1.1 + github.com/woodchen-ink/go-web-utils v1.0.0 golang.org/x/net v0.40.0 ) -require ( - github.com/woodchen-ink/go-web-utils v1.0.0 // indirect - golang.org/x/text v0.25.0 // indirect -) +require golang.org/x/text v0.25.0 // indirect diff --git a/go.sum b/go.sum index 60695da..15f2364 100644 --- a/go.sum +++ b/go.sum @@ -1,7 +1,5 @@ github.com/andybalholm/brotli v1.1.1 h1:PR2pgnyFznKEugtsUo0xLdDop5SKXd5Qf5ysW+7XdTA= github.com/andybalholm/brotli v1.1.1/go.mod h1:05ib4cKhjx3OQYUY22hTVd34Bc8upXjOLL2rKwwZBoA= -github.com/woodchen-ink/go-web-utils v0.0.0-20250621140947-08c57486fe2e h1:k/D90giyDyL5hDPJGGQexqZ423WmZqRUUxc/yQ6E8ws= -github.com/woodchen-ink/go-web-utils v0.0.0-20250621140947-08c57486fe2e/go.mod h1:d+L8rZ7xekLnf679XRvfwqpl4M8RCNdWSViaB3GmpnI= github.com/woodchen-ink/go-web-utils v1.0.0 h1:Kybe0ZPhRI4w5FJ4bZdPcepNEKTmbw3to3xLR31e+ws= github.com/woodchen-ink/go-web-utils v1.0.0/go.mod h1:hpiT30rd5Egj2LqRwYBqbEtUXjhjh/Qary0S14KCZgw= github.com/xyproto/randomstring v1.0.5 h1:YtlWPoRdgMu3NZtP45drfy1GKoojuR7hmRcnhZqKjWU= diff --git a/main.go b/main.go index ab44ce9..17c3fc4 100644 --- a/main.go +++ b/main.go @@ -129,6 +129,25 @@ func main() { matcher func(*http.Request) bool handler http.Handler }{ + // favicon.ico 处理器 + { + matcher: func(r *http.Request) bool { + return r.URL.Path == "/favicon.ico" + }, + handler: http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + // 检查是否有自定义favicon文件 + faviconPath := "favicon/favicon.ico" + if _, err := os.Stat(faviconPath); err == nil { + // 设置正确的Content-Type和缓存头 + w.Header().Set("Content-Type", "image/x-icon") + w.Header().Set("Cache-Control", "public, max-age=31536000") // 1年缓存 + http.ServeFile(w, r, faviconPath) + } else { + // 如果没有自定义favicon,返回404 + http.NotFound(w, r) + } + }), + }, // 管理路由处理器 { matcher: func(r *http.Request) bool {