From a78257427a69476064267519fcb30cb4d4780dbf Mon Sep 17 00:00:00 2001 From: Peanut Date: Sat, 21 Mar 2026 22:53:52 +0800 Subject: [PATCH] =?UTF-8?q?chore:=20=E4=BF=9D=E5=AD=98=E5=B0=8F=E7=A8=8B?= =?UTF-8?q?=E5=BA=8F=E9=85=8D=E7=BD=AE=E4=BF=AE=E6=94=B9=EF=BC=88=E5=90=88?= =?UTF-8?q?=E5=B9=B6=E5=88=86=E6=94=AF=E5=89=8D=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- conf/emotion-museum.conf | 125 +++++++++++++-------------------- mini-program/.env.development | 4 +- mini-program/src/config/env.js | 8 +-- 3 files changed, 54 insertions(+), 83 deletions(-) diff --git a/conf/emotion-museum.conf b/conf/emotion-museum.conf index a232d84..4798464 100644 --- a/conf/emotion-museum.conf +++ b/conf/emotion-museum.conf @@ -1,125 +1,95 @@ -# Emotion Museum 前端应用 Nginx 配置 -# 配置路径: /www/server/panel/vhost/nginx/emotion-museum.conf +# Emotion Museum HTTPS Nginx 配置 +# 配置路径:/www/server/panel/vhost/nginx/emotion-museum.conf server { - listen 80; - server_name 101.200.208.45; + listen 443 ssl; + http2 on; + server_name lifescript.happylifeos.com; + + ssl_certificate /etc/letsencrypt/live/lifescript.happylifeos.com/fullchain.pem; + ssl_certificate_key /etc/letsencrypt/live/lifescript.happylifeos.com/privkey.pem; + ssl_protocols TLSv1.2 TLSv1.3; + ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384; + ssl_prefer_server_ciphers on; + ssl_session_cache shared:SSL:10m; + ssl_session_timeout 10m; + + location ^~ /.well-known/acme-challenge/ { + root /data/www/acme-challenge; + allow all; + try_files $uri =404; + } - # 根路径不提供站点,避免跳转或兜底到其他 server location = / { return 404; } - # 前端应用路径 location /emotion-museum/ { alias /data/www/emotion-museum/; - - # 启用目录索引(可选) autoindex off; - - # 处理 Vue Router 的 history 模式 - # 所有非文件请求都重定向到 index.html - try_files $uri $uri/ /emotion-museum/index.html; - - # 设置缓存策略 - # HTML 文件不缓存 - location ~ \.html?$ { - add_header Cache-Control "no-cache, no-store, must-revalidate"; - add_header Pragma "no-cache"; - add_header Expires "0"; - } - - # 静态资源缓存 1 年 - location ~ \.(js|css|png|jpg|jpeg|gif|ico|svg|woff|woff2|ttf|eot)$ { + # 静态资源直接返回文件,不经过 try_files + location ~* ^/emotion-museum/(assets|static)/ { add_header Cache-Control "public, max-age=31536000, immutable"; expires 1y; + try_files $uri =404; } + # SPA 路由兜底 + try_files $uri $uri/ /emotion-museum/index.html; } - # 处理不带末尾斜杠的 /emotion-museum 请求 location = /emotion-museum { rewrite ^(.*)$ $1/ permanent; } - # 管理后台应用路径 location /emotion-museum-admin/ { alias /data/www/emotion-museum-admin/; - - # 启用目录索引(可选) autoindex off; - - # 处理 Vue Router 的 history 模式 - # 所有非文件请求都重定向到 index.html try_files $uri $uri/ /emotion-museum-admin/index.html; - - # 设置缓存策略 - # HTML 文件不缓存 - location ~ \.html?$ { - add_header Cache-Control "no-cache, no-store, must-revalidate"; - add_header Pragma "no-cache"; - add_header Expires "0"; - } - - # 静态资源缓存 1 年 - location ~ \.(js|css|png|jpg|jpeg|gif|ico|svg|woff|woff2|ttf|eot)$ { - add_header Cache-Control "public, max-age=31536000, immutable"; - expires 1y; - } } - # 处理不带末尾斜杠的 /emotion-museum-admin 请求 location = /emotion-museum-admin { rewrite ^(.*)$ $1/ permanent; } - # 体验前端应用路径 (course-web) location /course-of-life/ { alias /data/www/course-of-life/; - - # 启用目录索引(可选) autoindex off; - - # 处理 SPA 的 history 模式 (React Router) - # 所有非文件请求都重定向到 index.html try_files $uri $uri/ /course-of-life/index.html; - - # 设置缓存策略 - # HTML 文件不缓存 - location ~ \.html?$ { - add_header Cache-Control "no-cache, no-store, must-revalidate"; - add_header Pragma "no-cache"; - add_header Expires "0"; - } - - # 静态资源缓存 1 年 - location ~ \.(js|css|png|jpg|jpeg|gif|ico|svg|woff|woff2|ttf|eot)$ { - add_header Cache-Control "public, max-age=31536000, immutable"; - expires 1y; - } } - # 处理不带末尾斜杠的 /course-of-life 请求 location = /course-of-life { - # 不进行 301/302 外部跳转:内部改写到 /course-of-life/ 交给下方 SPA location 处理 - # 这样 URL 仍是 /course-of-life,但返回内容与 /course-of-life/ 完全一致(且不会触发“下载”) rewrite ^ /course-of-life/ last; } - # 后端 API 代理 + # life-script React 应用 + location /life-script/ { + alias /data/www/life-script/; + autoindex off; + # 静态资源直接返回文件 + location ~* ^/life-script/(assets|static)/ { + add_header Cache-Control "public, max-age=31536000, immutable"; + expires 1y; + try_files $uri =404; + } + # SPA 路由兜底 + try_files $uri $uri/ /life-script/index.html; + } + + location = /life-script { + rewrite ^ /life-script/ last; + } + location /api { proxy_pass http://127.0.0.1:19089; 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; - - # 超时设置 proxy_connect_timeout 60s; proxy_send_timeout 60s; proxy_read_timeout 60s; } - # WebSocket 代理 location /ws { proxy_pass http://127.0.0.1:19089; proxy_http_version 1.1; @@ -129,27 +99,28 @@ server { 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; - - # WebSocket 超时设置 proxy_connect_timeout 7d; proxy_send_timeout 7d; proxy_read_timeout 7d; } - # 健康检查端点 location /health { access_log off; return 200 "healthy\n"; add_header Content-Type text/plain; } - # 禁止访问敏感文件 location ~ /\. { deny all; access_log off; log_not_found off; } - access_log /www/wwwlogs/access.log; + access_log /www/wwwlogs/ssl-access.log; } +server { + listen 80; + server_name lifescript.happylifeos.com; + return 301 https://$host$request_uri; +} diff --git a/mini-program/.env.development b/mini-program/.env.development index 568c201..309f951 100644 --- a/mini-program/.env.development +++ b/mini-program/.env.development @@ -1,5 +1,5 @@ # 开发环境配置(本地开发调试) VITE_APP_ENV=dev -VITE_API_BASE_URL=https://lifescript.happylifeos.com/api -VITE_WS_URL=wss://lifescript.happylifeos.com/ws +VITE_API_BASE_URL=http://101.200.208.45:19089/api +VITE_WS_URL=ws://101.200.208.45:19089 VITE_DEBUG=true diff --git a/mini-program/src/config/env.js b/mini-program/src/config/env.js index d9007ee..5b575fe 100644 --- a/mini-program/src/config/env.js +++ b/mini-program/src/config/env.js @@ -21,13 +21,13 @@ const envConfig = { DEBUG: true }, [ENV_TYPE.TEST]: { - API_BASE_URL: 'http://101.200.208.45:19089/api', - WS_URL: 'ws://101.200.208.45:19089', + API_BASE_URL: 'https://lifescript.happylifeos.com/api', + WS_URL: 'wss://lifescript.happylifeos.com/ws', DEBUG: true }, [ENV_TYPE.PROD]: { - API_BASE_URL: 'http://101.200.208.45:19089/api', - WS_URL: 'ws://101.200.208.45:19089', + API_BASE_URL: 'https://lifescript.happylifeos.com/api', + WS_URL: 'wss://lifescript.happylifeos.com/ws', DEBUG: false } }