spark-server/deploy/nginx/README.md
2026-09-18 17:14:38 +08:00

1.9 KiB

Nginx 443 SNI (C3 / C4)

gnet v2 has no native TLS. IM certificates live here, not in spark-server tcp.tls.

Client --TLS--> :443 ssl_preread
                  ├─ SNI sparkapi.wyrs365.com → 127.0.0.1:8443 (HTTP TLS)
                  │                              → proxy_pass http://127.0.0.1:18080 + X-Real-IP
                  ├─ SNI sparkr.wyrs365.com   → 127.0.0.1:8443 (HTTP TLS)
                  │                              → proxy_pass http://127.0.0.1:9000 RustFS S3
                  └─ SNI sparkim.wyrs365.com  → 127.0.0.1:19001 (IM TLS)
                                               → PROXY protocol → 127.0.0.1:9090 gnet

On this ECS, :443 is shared with other wyrs HTTPS sites. Do not replace /etc/nginx/nginx.conf. Drop-ins:

  • host/sparkapi.conf → /etc/nginx/conf.d/
  • host/sparkr.conf → /etc/nginx/conf.d/ (RustFS S3; DNS A record sparkr.wyrs365.com → this host)
  • host/spark-sni.conf → /etc/nginx/stream.d/

Existing listen 443 ssl vhosts move to 127.0.0.1:8443 ssl proxy_protocol so SNI can take public 443. 00-spark-http.conf sets real_ip_header proxy_protocol and port_in_redirect off so $remote_addr is the client and redirects stay on 443.

spark-server (Docker):

  • HTTP 127.0.0.1:18080 → container :8080
  • TCP 127.0.0.1:9090 with proxy_protocol: true → container :9090 (host :9000 is rustfs S3; bind 127.0.0.1:9000, not public)
  • Image / config / logs: /data/spark-server/{images,configs,logs}
  • Public security group: 443 only
  • Clients upload/download at https://sparkr.wyrs365.com (path-style). spark-server talks to rustfs:9000 on the Docker network and signs URLs with object_storage.public_endpoint.
bash deploy/nginx/install-host.sh

http.conf / stream.conf / nginx.conf are a dedicated-box template. /readyz is loopback-only on 8443; local probes hit Gin on 127.0.0.1:18080.