Skip to content

Commit f8bc097

Browse files
committed
update: refine Traefik rules for host matching v3 and add Traefik configuration regeneration in restore commands v3
1 parent 750d732 commit f8bc097

7 files changed

Lines changed: 35 additions & 11 deletions

File tree

commands/multistore.cmd

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,7 @@ function generate_roll_env_yml() {
117117
else
118118
traefik_rules+=" || "
119119
fi
120-
traefik_rules+="HostRegexp(\`{subdomain:.+}.${hostname}\`) || Host(\`${hostname}\`)"
120+
traefik_rules+="HostRegexp(\`^.+\\.${hostname//./\\.}\$\$\`) || Host(\`${hostname}\`)"
121121
done < <(get_all_hostnames)
122122

123123
# Build extra_hosts entries
@@ -134,7 +134,7 @@ services:
134134
nginx:
135135
labels:
136136
- traefik.http.routers.\${ROLL_ENV_NAME}-nginx.rule=
137-
HostRegexp(\`{subdomain:.+}.\${TRAEFIK_DOMAIN}\`) || Host(\`\${TRAEFIK_DOMAIN}\`)
137+
HostRegexp(\`^.+\\.\${TRAEFIK_DOMAIN}\$\$\`) || Host(\`\${TRAEFIK_DOMAIN}\`)
138138
|| ${traefik_rules}
139139
volumes:
140140
- ./.roll/nginx/stores.map:/etc/nginx/default.d/stores.map:ro

commands/restore-full.cmd

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1098,6 +1098,18 @@ function signEnvironmentCertificate() {
10981098
}
10991099
fi
11001100

1101+
# Regenerate traefik dynamic config and restart to pick up new certificates
1102+
logVerbose "Regenerating traefik configuration..."
1103+
if [[ $RESTORE_VERBOSE -eq 1 ]]; then
1104+
"${ROLL_DIR}/bin/roll" svc up traefik || {
1105+
logMessage WARNING "Failed to restart traefik"
1106+
}
1107+
else
1108+
"${ROLL_DIR}/bin/roll" svc up traefik >/dev/null 2>&1 || {
1109+
logMessage WARNING "Failed to restart traefik"
1110+
}
1111+
fi
1112+
11011113
logMessage SUCCESS "SSL certificates signed for ${domain}"
11021114
}
11031115

commands/restore.cmd

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -930,6 +930,18 @@ function signEnvironmentCertificate() {
930930
}
931931
fi
932932

933+
# Regenerate traefik dynamic config and restart to pick up new certificates
934+
logVerbose "Regenerating traefik configuration..."
935+
if [[ $RESTORE_VERBOSE -eq 1 ]]; then
936+
"${ROLL_DIR}/bin/roll" svc up traefik || {
937+
logMessage WARNING "Failed to restart traefik"
938+
}
939+
else
940+
"${ROLL_DIR}/bin/roll" svc up traefik >/dev/null 2>&1 || {
941+
logMessage WARNING "Failed to restart traefik"
942+
}
943+
fi
944+
933945
logMessage SUCCESS "SSL certificates signed for ${domain}"
934946
}
935947

docs/configuration/multipledomains.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,20 +16,20 @@ Multiple top-level domains may also be setup by following the instructions below
1616
varnish:
1717
labels:
1818
- traefik.http.routers.${ROLL_ENV_NAME}-varnish.rule=
19-
HostRegexp(`{subdomain:.+}.${TRAEFIK_DOMAIN}`)
19+
HostRegexp(`^.+\.${TRAEFIK_DOMAIN}$$`)
2020
|| Host(`${TRAEFIK_DOMAIN}`)
21-
|| HostRegexp(`{subdomain:.+}.alternate1.test`)
21+
|| HostRegexp(`^.+\.alternate1\.test$$`)
2222
|| Host(`alternate1.test`)
23-
|| HostRegexp(`{subdomain:.+}.alternate2.test`)
23+
|| HostRegexp(`^.+\.alternate2\.test$$`)
2424
|| Host(`alternate2.test`)
2525
nginx:
2626
labels:
2727
- traefik.http.routers.${ROLL_ENV_NAME}-nginx.rule=
28-
HostRegexp(`{subdomain:.+}.${TRAEFIK_DOMAIN}`)
28+
HostRegexp(`^.+\.${TRAEFIK_DOMAIN}$$`)
2929
|| Host(`${TRAEFIK_DOMAIN}`)
30-
|| HostRegexp(`{subdomain:.+}.alternate1.test`)
30+
|| HostRegexp(`^.+\.alternate1\.test$$`)
3131
|| Host(`alternate1.test`)
32-
|| HostRegexp(`{subdomain:.+}.alternate2.test`)
32+
|| HostRegexp(`^.+\.alternate2\.test$$`)
3333
|| Host(`alternate2.test`)
3434
```
3535

environments/includes/nginx.base.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ services:
77
- traefik.http.routers.${ROLL_ENV_NAME}-nginx.tls=true
88
- traefik.http.routers.${ROLL_ENV_NAME}-nginx.priority=2
99
- traefik.http.routers.${ROLL_ENV_NAME}-nginx.rule=
10-
HostRegexp(`{subdomain:.+}.${TRAEFIK_DOMAIN}`) || Host(`${TRAEFIK_DOMAIN}`)
10+
HostRegexp(`^.+\.${TRAEFIK_DOMAIN}$$`) || Host(`${TRAEFIK_DOMAIN}`)
1111
- traefik.http.services.${ROLL_ENV_NAME}-nginx.loadbalancer.server.port=80
1212
- traefik.docker.network=${ROLL_ENV_NAME}_default
1313
volumes:

environments/includes/varnish.base.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,6 @@ services:
1515
- traefik.http.routers.${ROLL_ENV_NAME}-varnish.tls=true
1616
- traefik.http.routers.${ROLL_ENV_NAME}-varnish.priority=1
1717
- traefik.http.routers.${ROLL_ENV_NAME}-varnish.rule=
18-
HostRegexp(`{subdomain:.+}.${TRAEFIK_DOMAIN}`) || Host(`${TRAEFIK_DOMAIN}`)
18+
HostRegexp(`^.+\.${TRAEFIK_DOMAIN}$$`) || Host(`${TRAEFIK_DOMAIN}`)
1919
- traefik.http.services.${ROLL_ENV_NAME}-varnish.loadbalancer.server.port=80
2020
- traefik.docker.network=${ROLL_ENV_NAME}_default

environments/magento2/magento2.base.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ services:
1111
- traefik.http.routers.${ROLL_ENV_NAME}-livereload.tls=true
1212
- traefik.http.routers.${ROLL_ENV_NAME}-livereload.priority=3
1313
- traefik.http.routers.${ROLL_ENV_NAME}-livereload.rule=
14-
(HostRegexp(`{subdomain:.+}.${TRAEFIK_DOMAIN}`) || Host(`${TRAEFIK_DOMAIN}`))
14+
(HostRegexp(`^.+\.${TRAEFIK_DOMAIN}$$`) || Host(`${TRAEFIK_DOMAIN}`))
1515
&& (Path(`/livereload.js`) || Path(`/livereload`))
1616
- traefik.http.routers.${ROLL_ENV_NAME}-livereload.service=${ROLL_ENV_NAME}-livereload
1717
- traefik.http.services.${ROLL_ENV_NAME}-livereload.loadbalancer.server.port=35729

0 commit comments

Comments
 (0)