d78379486c
- website/:VitePress 官网工程(首页/功能/对比/快速开始/部署运维/教程/社区),与文档站同构 - 两种形态由 SITE_BASE 决定:/www/ 子路径(过渡)与 / 根路径(独立域名),内容同源 - deploy/:新增 with-website profile、网关 /www/ 路由、多域名 website vhost 段 - Makefile:新增 website 镜像条目与 make website 目标 - 教程页给出部署/使用两支视频的元数据与录制要求,官网留有教程入口
181 lines
5.5 KiB
Plaintext
181 lines
5.5 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;
|
|
}
|
|
|
|
upstream iotlcm_website {
|
|
zone iotlcm_website 64k;
|
|
server website:80 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;
|
|
}
|
|
}
|
|
|
|
# ---------- 官网 ----------
|
|
# 独立域名形态:把 server_name 换成实际官网域名,
|
|
# 并让 DNS 指到这台机器。官网容器以 SITE_BASE=/ 构建(资源引用为 /assets/...),
|
|
# 所以这里按根路径转发。
|
|
server {
|
|
listen 80;
|
|
server_name www.your-domain.example.com;
|
|
|
|
client_max_body_size 200m;
|
|
|
|
location / {
|
|
proxy_pass http://iotlcm_website;
|
|
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;
|
|
}
|
|
}
|