This commit is contained in:
eric
2026-03-23 02:18:43 -05:00
parent 2f73b2ee23
commit 894150d1fa
6 changed files with 73 additions and 17 deletions

View File

@@ -1,2 +1,2 @@
PAYMENT_API_URL=https://api.nomadyt.com
PAYMENT_API_URL=https://salonapi.hackrobot.cn
PAYMENT_JOIN_AMOUNT=2900

View File

@@ -13,9 +13,9 @@
### 前端 (salon)
- `PAYMENT_API_URL`: salonapi 公网地址,**生产环境必填**(如 `https://api.nomadyt.com`
- `ROOT_DOMAIN`: 根域名,未设 PAYMENT_API_URL 时用于推导 `https://api.${ROOT_DOMAIN}`,默认 `nomadyt.com`
- `NEXT_PUBLIC_SITE_URL`: 前端站点地址,线上 `https://nomadyt.com`
- `PAYMENT_API_URL`: salonapi 公网地址,**生产环境必填**(如 `https://salonapi.hackrobot.cn`
- `ROOT_DOMAIN`: 根域名(兼容变量),默认 `hackrobot.cn`;生产 salonapi 主机为 `salonapi.hackrobot.cn`
- `NEXT_PUBLIC_SITE_URL`: 前端站点地址,线上 `https://salon.hackrobot.cn`
- `PAYJSAPI_PORT`: 开发时 salonapi 端口,默认 `8007`
- `ZPAY_PID` / `ZPAY_KEY``XORPAY_AID` / `XORPAY_SECRET`:支付平台凭证,与 salonapi 一致。用于 pay/status 兜底直接查询,**本地无回调时依赖此检测支付**
- `NEXT_PUBLIC_POCKETBASE_URL` / `POCKETBASE_URL`: PocketBase 地址

View File

@@ -1,6 +1,6 @@
const isDev = process.env.NODE_ENV === "development";
/** 前端站点地址。线上 nomadyt.com,开发 localhost:3002 */
/** 前端站点地址。线上 salon.hackrobot.cn,开发 localhost:3002 */
export const SITE_URL =
process.env.NEXT_PUBLIC_SITE_URL ||
(isDev ? "http://localhost:3002" : "https://nomadyt.com");
(isDev ? "http://localhost:3002" : "https://salon.hackrobot.cn");

View File

@@ -1,25 +1,28 @@
/**
* 域名配置
* - salon 前端线上: nomadyt.com
* - salonapi 后端线上: api.nomadyt.comjoin、支付等
* 域名配置(腾讯云生产)
* - 前端: https://salon.hackrobot.cn
* - salonapi: https://salonapi.hackrobot.cnjoin、支付等
*/
const isDev = process.env.NODE_ENV === "development";
/** 根域名。前端 nomadyt.com后端 api.nomadyt.com */
export const ROOT_DOMAIN =
process.env.ROOT_DOMAIN || process.env.NEXT_PUBLIC_ROOT_DOMAIN || "nomadyt.com";
/** 生产环境 salonapi 主机(非 api.根域名 模式) */
const DEFAULT_PROD_PAYMENT_API_HOST = "salonapi.hackrobot.cn";
/** salonapi 默认地址。开发连本地 8007生产连 api.nomadyt.com */
/** 兼容旧逻辑:未单独设 PAYMENT_API_URL 时用于文档/兜底 */
export const ROOT_DOMAIN =
process.env.ROOT_DOMAIN || process.env.NEXT_PUBLIC_ROOT_DOMAIN || "hackrobot.cn";
/** salonapi 默认地址。开发连本地 8007生产连 salonapi.hackrobot.cn */
export const DEFAULT_PAYMENT_API_URL = isDev
? "http://127.0.0.1:8007"
: `https://api.${ROOT_DOMAIN}`;
: `https://${DEFAULT_PROD_PAYMENT_API_HOST}`;
/** 解析 salonapi 地址api.nomadyt.com */
/** 解析 salonapi 公网地址 */
export function resolvePaymentApiUrl(): string {
const url = process.env.PAYMENT_API_URL || DEFAULT_PAYMENT_API_URL;
if (!isDev && /^(https?:\/\/)?(127\.0\.0\.1|localhost)(:\d+)?(\/|$)/i.test(url)) {
return `https://api.${ROOT_DOMAIN}`;
return `https://${DEFAULT_PROD_PAYMENT_API_HOST}`;
}
return url.replace(/\/$/, "");
}

View File

@@ -1,6 +1,6 @@
/**
* salon 服务配置 - PocketBase、支付
* 前端 nomadyt.com,后端 salonapi api.nomadyt.com
* 前端 salon.hackrobot.cn,后端 salonapi.hackrobot.cn
*/
import { resolvePaymentApiUrl } from "./domain.config";

View File

@@ -0,0 +1,53 @@
# 腾讯云:将 salon.hackrobot.cn、salonapi.hackrobot.cn 解析到本机公网 IP 后,
# 复制到 /etc/nginx/sites-available/ 并 ln -s 到 sites-enabled再 nginx -t && systemctl reload nginx。
# 需先申请 SSLcertbot 或腾讯云 SSL 证书),把证书路径替换为实际路径。
# ---------- salon 前端Next.js 建议 Node 监听 127.0.0.1:3002由 Nginx 反代)----------
server {
listen 443 ssl http2;
server_name salon.hackrobot.cn;
ssl_certificate /etc/nginx/ssl/salon.hackrobot.cn/fullchain.pem;
ssl_certificate_key /etc/nginx/ssl/salon.hackrobot.cn/privkey.pem;
location / {
proxy_pass http://127.0.0.1:3002;
proxy_http_version 1.1;
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;
}
}
server {
listen 80;
server_name salon.hackrobot.cn;
return 301 https://$host$request_uri;
}
# ---------- salonapi 后端uvicorn 建议 127.0.0.1:8007----------
server {
listen 443 ssl http2;
server_name salonapi.hackrobot.cn;
ssl_certificate /etc/nginx/ssl/salonapi.hackrobot.cn/fullchain.pem;
ssl_certificate_key /etc/nginx/ssl/salonapi.hackrobot.cn/privkey.pem;
client_max_body_size 50m;
location / {
proxy_pass http://127.0.0.1:8007;
proxy_http_version 1.1;
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;
}
}
server {
listen 80;
server_name salonapi.hackrobot.cn;
return 301 https://$host$request_uri;
}