diff --git a/00-init-tools.sh b/00-init-tools.sh index 2de3c24..a81d824 100755 --- a/00-init-tools.sh +++ b/00-init-tools.sh @@ -286,6 +286,14 @@ _install_pc_nginx_proxy() { rm -f /etc/nginx/sites-enabled/default info " 已移除 sites-enabled/default,避免与 openim-pc-proxy 冲突" fi + # 保留 sites-available/default 文件时,去掉 default_server,防止日后误启用再次抢占 :80 + if [[ -f /etc/nginx/sites-available/default ]]; then + sed -i.bak-openim \ + -e 's/listen \[::\]:80 default_server;/listen [::]:80;/g' \ + -e 's/listen 80 default_server;/listen 80;/g' \ + /etc/nginx/sites-available/default 2>/dev/null || true + info " 已去除 sites-available/default 中的 default_server(若存在)" + fi else install -m 0644 "$conf_src" "/etc/nginx/conf.d/${conf_name}" fi @@ -296,6 +304,7 @@ _install_pc_nginx_proxy() { success " Nginx 反代已启用(配置: $conf_src)" info " 请放行 TCP 80;curl -sS http://127.0.0.1/nginx-health 应返回 ok" + info " 纯 IP 访问 :80 为 API 网关;若 nginx -t 报 duplicate default_server,请从其它站点配置中去掉 default_server" info " .env.deploy-test 中 PC_BACKEND_ORIGIN=http://<公网IP>(与 DEPLOY_TEST_IP 一致)" } diff --git a/README.md b/README.md index 737ca3f..115ac0c 100644 --- a/README.md +++ b/README.md @@ -298,6 +298,8 @@ TENCENT_SDK_SECRET_KEY=xxx 3. 云安全组放行 **TCP 80**。 4. `.env.deploy-test` 中设置 **`PC_BACKEND_ORIGIN=http://`**(无末尾 `/`),与 `DEPLOY_TEST_IP` 一致;再 `./deploy-test/07-start-frontend.sh pc` 启动 PC 时即注入 `VITE_*`。 +**仅 IP、:80 只做 API(不出现 CMS 静态站)**:本配置中 `openim-pc-proxy` 使用 **`listen 80 default_server`**,`GET /` 返回简短说明文本(非 CMS)。`00-init-tools.sh nginx` 会禁用 `sites-enabled/default`,并尝试去掉 `sites-available/default` 里的 `default_server`。若机上还有其它站点也写了 **`default_server`**,`nginx -t` 会报错,需在该站点配置中删除 `default_server`(保留 `listen 80;` 即可,用 **域名** 访问 CMS)。**CMS 开发**请用 **`http://IP:8001`**(UMI)。 + ### Docker 基础设施 | 服务 | 端口 | diff --git a/nginx/openim-pc-proxy.conf b/nginx/openim-pc-proxy.conf index f3a9a80..14c8ddf 100644 --- a/nginx/openim-pc-proxy.conf +++ b/nginx/openim-pc-proxy.conf @@ -7,14 +7,24 @@ # 安全组 / 防火墙须放行 TCP 80;后端 10001/10002/10008 仅需本机访问(127.0.0.1) # # CORS:Vite 开发服在 :5173,API 经 :80 反代,浏览器视为跨域,需在此返回允许头并处理 OPTIONS 预检 +# +# default_server:纯 IP 访问 http://x.x.x.x/ 时命中本 server(不做 CMS 静态站,仅 API 网关) +# CMS 开发请用 http://IP:8001(UMI dev) server { - listen 80; - listen [::]:80; + listen 80 default_server; + listen [::]:80 default_server; server_name _; client_max_body_size 100m; + # 根路径:不托管前端;避免与其它站点抢 default_server 后仍误以为是 CMS + location = / { + default_type text/plain; + charset utf-8; + return 200 "OpenIM API gateway (deploy-test). Paths: /api/im/ /api/user/ /api/chat/ /msg_gateway — CMS dev: :8001\n"; + } + # OpenIM HTTP API → openim-server :10002 location /api/im/ { if ($request_method = OPTIONS) {