# ============================================================ # 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; } }