From 009bd2e76bc79646dcdf531b1500bac366985239 Mon Sep 17 00:00:00 2001 From: jingrow Date: Mon, 16 Jun 2025 09:43:15 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=9D=E5=A7=8B=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- acme.json | 1 + conf.d/purearthsupplies.yml | 33 +++++++++++++++++++++++++++++++++ docker-compose.yml | 20 ++++++++++++++++++++ traefik.yml | 24 ++++++++++++++++++++++++ 4 files changed, 78 insertions(+) create mode 100644 acme.json create mode 100644 conf.d/purearthsupplies.yml create mode 100644 docker-compose.yml create mode 100644 traefik.yml diff --git a/acme.json b/acme.json new file mode 100644 index 0000000..0519ecb --- /dev/null +++ b/acme.json @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/conf.d/purearthsupplies.yml b/conf.d/purearthsupplies.yml new file mode 100644 index 0000000..d831c06 --- /dev/null +++ b/conf.d/purearthsupplies.yml @@ -0,0 +1,33 @@ +http: + routers: + main-https: + rule: &host_rule "Host(`purearthsupplies.com`) || Host(`www.purearthsupplies.com`)" + entryPoints: + - websecure + service: main-service + tls: + certResolver: myresolver + + main-http-redirect: + rule: *host_rule + entryPoints: + - web + middlewares: + - redirect-to-https + service: noop + + services: + main-service: + loadBalancer: + servers: + - url: "http://107.174.127.105:3000" + noop: + loadBalancer: + servers: + - url: "http://127.0.0.1:65535" # 占位用,无实际后端,仅用于HTTP跳转 + + middlewares: + redirect-to-https: + redirectScheme: + scheme: https + permanent: true \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..8916418 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,20 @@ +services: + traefik: + # The official v3 Traefik docker image + image: traefik:v3.4 + container_name: traefik + restart: always + # Enables the web UI and tells Traefik to listen to docker + command: --api.insecure=true --providers.docker + ports: + # The HTTP port + - "80:80" + - "443:443" + # The Web UI (enabled by --api.insecure=true) + - "8080:8080" + volumes: + # So that Traefik can listen to the Docker events + - /var/run/docker.sock:/var/run/docker.sock + - ./traefik.yml:/etc/traefik/traefik.yml:ro + - ./conf.d:/etc/traefik/conf.d:ro + - ./acme.json:/etc/traefik/acme.json diff --git a/traefik.yml b/traefik.yml new file mode 100644 index 0000000..d47a2f4 --- /dev/null +++ b/traefik.yml @@ -0,0 +1,24 @@ +entryPoints: + web: + address: ":80" + websecure: + address: ":443" + +api: + dashboard: true + insecure: true # 生产环境建议关闭 + +providers: + docker: + exposedByDefault: false + file: + directory: /etc/traefik/conf.d + watch: true + +certificatesResolvers: + myresolver: + acme: + email: support@jingrow.com + storage: acme.json + httpChallenge: + entryPoint: web \ No newline at end of file