From 1746c77cb1c962848ec39fd20f308e32ef426876 Mon Sep 17 00:00:00 2001 From: kdletters Date: Sat, 15 Aug 2026 17:25:40 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E9=A2=84=E8=A7=88=E6=8E=A7?= =?UTF-8?q?=E5=88=B6=E5=8F=B0=E5=AD=90=E8=B7=AF=E5=BE=84=E9=9D=99=E6=80=81?= =?UTF-8?q?=E8=B5=84=E6=BA=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 让控制服务原生托管 /build 页面与静态资源 保持内网 Nginx 路径透传并补充部署合同检查 --- .../nginx/genarrative-preview-deployer-lan.conf | 2 +- scripts/check-preview-deployer.mjs | 9 +++++++++ .../crates/preview-deployer-server/src/lib.rs | 15 ++++++++++----- 3 files changed, 20 insertions(+), 6 deletions(-) diff --git a/deploy/nginx/genarrative-preview-deployer-lan.conf b/deploy/nginx/genarrative-preview-deployer-lan.conf index 82e698937..01cfb6817 100644 --- a/deploy/nginx/genarrative-preview-deployer-lan.conf +++ b/deploy/nginx/genarrative-preview-deployer-lan.conf @@ -3,7 +3,7 @@ location = /build { } location ^~ /build/ { - proxy_pass http://127.0.0.1:8410/; + proxy_pass http://127.0.0.1:8410; proxy_http_version 1.1; proxy_set_header Host $host; diff --git a/scripts/check-preview-deployer.mjs b/scripts/check-preview-deployer.mjs index 603956cb4..230052052 100644 --- a/scripts/check-preview-deployer.mjs +++ b/scripts/check-preview-deployer.mjs @@ -21,6 +21,10 @@ const systemd = readFileSync( 'deploy/systemd/genarrative-preview-deployer.service', 'utf8', ); +const server = readFileSync( + 'server-rs/crates/preview-deployer-server/src/lib.rs', + 'utf8', +); const nginx = readFileSync( 'deploy/nginx/genarrative-preview-deployer-lan.conf', 'utf8', @@ -118,6 +122,11 @@ assertIncludes( 'location ^~ /build/', '内网 Nginx 必须提供 /build/ 路由。', ); +assertIncludes( + server, + '.nest_service("/build/assets", ServeDir::new(static_dir.join("assets")))', + '控制服务必须原生托管 /build 子路径,不能依赖 Nginx 隐式改写。', +); assertIncludes( jobConfig, 'jenkins/Jenkinsfile.preview-deployer', diff --git a/server-rs/crates/preview-deployer-server/src/lib.rs b/server-rs/crates/preview-deployer-server/src/lib.rs index 4915763ee..11e79db54 100644 --- a/server-rs/crates/preview-deployer-server/src/lib.rs +++ b/server-rs/crates/preview-deployer-server/src/lib.rs @@ -234,11 +234,16 @@ pub fn build_router(state: AppState) -> Router { let mut router = Router::new().merge(api); if let Some(static_dir) = state.config.static_dir.clone() { - router = router.fallback_service( - ServeDir::new(&static_dir) - .append_index_html_on_directories(true) - .fallback(ServeFile::new(static_dir.join("index.html"))), - ); + let index = static_dir.join("index.html"); + router = router + .route_service("/build", ServeFile::new(index.clone())) + .route_service("/build/", ServeFile::new(index.clone())) + .nest_service("/build/assets", ServeDir::new(static_dir.join("assets"))) + .fallback_service( + ServeDir::new(&static_dir) + .append_index_html_on_directories(true) + .fallback(ServeFile::new(index)), + ); } router