Files
iotlcm/deploy/config/nginx/iotlcm.conf
T
Dai0814 9f15ff6f9e
mirror-to-gitee / mirror (push) Successful in 58s
revert: 撤掉单仓内的门户骨架,门户以独立仓 iotlcm-public/website 为唯一来源
原因
门户已拆分为独立仓 iotlcm-public/website(11:28 建仓,13:13 完成
fafc743「并入旧骨架独有价值内容,修 favicon 落地路径与过渡形态绑定」),
是门户的唯一事实来源。本仓 6c8314a 合并进来的 website/ 是拆分前的
旧骨架,继续保留会导致:
- 两份门户代码持续漂移,同一问题要在两个仓各修一遍
- 单仓 compose / gateway / Makefile 里残留 with-website profile 与
  /www/ 路由,与独立仓「门户自起容器、独立端口」的既定方案冲突

本提交 = revert -m 1 6c8314a,效果等同回到 e98f856
(git diff e98f856 HEAD 为空)。回退点:
tag backup/before-revert-portal-20261104 -> 6c8314a

门户部署改为(164 上,独立目录,不动 iotlcm-deploy):
  git clone https://git.5iot.com/iotlcm-public/website.git ~/iotlcm/website
  cd ~/iotlcm/website
  PORTAL_BIND_ADDR=0.0.0.0 docker compose -f deploy/docker-compose.yml up -d --build
2026-11-04 13:17:36 +08:00

156 lines
4.7 KiB
Plaintext

# ============================================================
# IotLCM 对外入口 nginx 配置示例
#
# 作用:把多个服务按路径分流到统一域名下。
# 若宿主机已有 nginx 或面板,可不启动本容器,
# 把下面的 location 段落并入宿主机配置即可。
#
# 把 your-domain.example.com 替换为你的实际域名。
# ============================================================
# ---------- 后端地址解析 ----------
# 这些 upstream 写的是 compose 服务名。nginx 默认只在**启动时**解析一次,
# 容器重建后 IP 变了就会持续 502(需重启 nginx)。resolve + zone 让它在运行期自动跟随。
# 注意:127.0.0.11 是 Docker 内置 DNS,仅在容器内有效:
# ・在容器内用本文件 → 保持下面的 resolver 不动
# ・把本文件并入宿主机 nginx → 把 resolver 换成宿主机 DNS(或删掉 resolver 与各 upstream 的 resolve 参数)
resolver 127.0.0.11 valid=10s ipv6=off;
upstream iotlcm_admin_api {
zone iotlcm_admin_api 64k;
server admin-svr:8008 resolve;
}
upstream iotlcm_admin_ui {
zone iotlcm_admin_ui 64k;
server admin-ui:80 resolve;
}
upstream iotlcm_openapi_api {
zone iotlcm_openapi_api 64k;
server openapi:8000 resolve;
}
upstream iotlcm_docs {
zone iotlcm_docs 64k;
server docs:80 resolve;
}
upstream iotlcm_app_web {
zone iotlcm_app_web 64k;
server app-web:80 resolve;
}
upstream iotlcm_app_server {
zone iotlcm_app_server 64k;
server app-server:8010 resolve;
}
# ---------- OpenAPI 对外域名 ----------
server {
listen 80;
server_name api.your-domain.example.com;
client_max_body_size 200m;
location ^~ /openapi/v3/ {
proxy_pass http://iotlcm_openapi_api;
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;
proxy_read_timeout 120s;
proxy_send_timeout 120s;
}
# 运营商能力代理(白名单转发 / 共享 Token)
location ^~ /route/open/ {
proxy_pass http://iotlcm_openapi_api;
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;
proxy_read_timeout 120s;
proxy_send_timeout 120s;
}
location / {
proxy_pass http://iotlcm_openapi_api;
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 admin.your-domain.example.com;
client_max_body_size 200m;
location / {
proxy_pass http://iotlcm_admin_ui;
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;
}
# 文档站(子路径 /docs/)
location = /docs {
return 301 /docs/;
}
location /docs/ {
proxy_pass http://iotlcm_docs;
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;
}
}
# ---------- 小程序 / H5 ----------
server {
listen 80;
server_name app.your-domain.example.com;
client_max_body_size 200m;
location ^~ /app/api/v1/ {
proxy_pass http://iotlcm_app_server/api/v1/;
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;
proxy_read_timeout 120s;
proxy_send_timeout 120s;
}
location ^~ /app/ {
proxy_pass http://iotlcm_app_web;
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;
}
location / {
proxy_pass http://iotlcm_app_web;
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;
}
}