From f708ba712a04a7155ba966051cf13abb6bb34bb1 Mon Sep 17 00:00:00 2001 From: Leo <98382335+gaoziman@users.noreply.github.com> Date: Wed, 8 Oct 2025 02:23:45 +0800 Subject: [PATCH] =?UTF-8?q?=E9=85=8D=E7=BD=AE=EF=BC=9A=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E7=8E=AF=E5=A2=83=E9=85=8D=E7=BD=AE=E5=92=8C=E9=83=A8=E7=BD=B2?= =?UTF-8?q?=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 添加环境变量配置(.env, .env.dev, .env.test, .env.prod) - 添加Docker配置(.dockerignore) - 添加Nginx部署配置(nginx.conf) - 添加Netlify部署配置(netlify.toml) - 添加HTML入口文件(index.html) --- .dockerignore | 8 +++++++ .env | 26 ++++++++++++++++++++ .env.dev | 2 ++ .env.prod | 6 +++++ .env.test | 6 +++++ index.html | 17 +++++++++++++ netlify.toml | 17 +++++++++++++ nginx.conf | 66 +++++++++++++++++++++++++++++++++++++++++++++++++++ 8 files changed, 148 insertions(+) create mode 100644 .dockerignore create mode 100644 .env create mode 100644 .env.dev create mode 100644 .env.prod create mode 100644 .env.test create mode 100644 index.html create mode 100644 netlify.toml create mode 100644 nginx.conf diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..05f381c --- /dev/null +++ b/.dockerignore @@ -0,0 +1,8 @@ +/node_modules +/.git +/.gitignore +/.vscode +/.DS_Store +/*.md +/dist + diff --git a/.env b/.env new file mode 100644 index 0000000..315929d --- /dev/null +++ b/.env @@ -0,0 +1,26 @@ +# 项目根目录 +VITE_BASE_URL = / + +# 项目名称 +VITE_APP_NAME = COI-ADMIN + +# 路由模式 web | hash +VITE_ROUTE_MODE = web + +# 路由加载模式 static | dynamic +VITE_ROUTE_LOAD_MODE = dynamic + +# 设置登陆后跳转地址 +VITE_HOME_PATH = /dashboard + +# 本地存储前缀 +VITE_STORAGE_PREFIX = + +# 版权信息 +VITE_COPYRIGHT_INFO = Copyright © 2024 Leocoder + +# 自动刷新token +VITE_AUTO_REFRESH_TOKEN = Y + +# 默认多语言 enUS | zhCN +VITE_DEFAULT_LANG = zhCN diff --git a/.env.dev b/.env.dev new file mode 100644 index 0000000..a6f9e31 --- /dev/null +++ b/.env.dev @@ -0,0 +1,2 @@ +# 是否开启服务接口代理 Y | N +VITE_HTTP_PROXY=N diff --git a/.env.prod b/.env.prod new file mode 100644 index 0000000..29a3c4e --- /dev/null +++ b/.env.prod @@ -0,0 +1,6 @@ +# 是否开启压缩资源 +VITE_BUILD_COMPRESS=N + +# 压缩算法 gzip | brotliCompress | deflate | deflateRaw +VITE_COMPRESS_TYPE=gzip + diff --git a/.env.test b/.env.test new file mode 100644 index 0000000..29a3c4e --- /dev/null +++ b/.env.test @@ -0,0 +1,6 @@ +# 是否开启压缩资源 +VITE_BUILD_COMPRESS=N + +# 压缩算法 gzip | brotliCompress | deflate | deflateRaw +VITE_COMPRESS_TYPE=gzip + diff --git a/index.html b/index.html new file mode 100644 index 0000000..fbc0533 --- /dev/null +++ b/index.html @@ -0,0 +1,17 @@ + + + + + + + + %VITE_APP_NAME% + + + +
+
+ + + + diff --git a/netlify.toml b/netlify.toml new file mode 100644 index 0000000..a661423 --- /dev/null +++ b/netlify.toml @@ -0,0 +1,17 @@ +[build] +publish = "dist" +command = "vite build --mode prod" + +[build.environment] +NODE_VERSION = "20" + +[[redirects]] +from = "/*" +to = "/index.html" +status = 200 + +[[headers]] +for = "/manifest.webmanifest" + +[headers.values] +Content-Type = "application/manifest+json" diff --git a/nginx.conf b/nginx.conf new file mode 100644 index 0000000..9a275cd --- /dev/null +++ b/nginx.conf @@ -0,0 +1,66 @@ +server { + listen 80; + listen [::]:80; + + # 启用 gzip 压缩 + gzip on; + gzip_vary on; + gzip_min_length 10240; + gzip_proxied expired no-cache no-store private auth; + gzip_types text/plain text/css text/xml text/javascript application/x-javascript application/xml application/javascript; + gzip_disable "MSIE [1-6]\."; + + # 设定 MIME types + include /etc/nginx/mime.types; + + # 基本安全设定 + add_header X-Frame-Options "SAMEORIGIN"; + add_header X-XSS-Protection "1; mode=block"; + add_header X-Content-Type-Options "nosniff"; + + # 增加伺服器效能的配置 + client_max_body_size 100M; + client_body_buffer_size 128k; + proxy_connect_timeout 90; + proxy_send_timeout 90; + proxy_read_timeout 90; + proxy_buffer_size 4k; + proxy_buffers 4 32k; + proxy_busy_buffers_size 64k; + + location / { + root /www; + index index.html; + try_files $uri $uri/ /index.html; + + # 设定快取控制 + location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ { + expires 30d; + add_header Cache-Control "public, no-transform"; + } + + # 动态内容不快取 + location = /index.html { + add_header Cache-Control "no-store, no-cache, must-revalidate"; + add_header Pragma "no-cache"; + expires -1; + } + + # 错误处理 + proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504; + proxy_intercept_errors on; + + # 基本的代理设定 + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + } + + # 禁止访问隐藏文件 + location ~ /\. { + deny all; + access_log off; + log_not_found off; + } +}