438 lines
12 KiB
XML
438 lines
12 KiB
XML
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
|
<svg
|
|
width="1600"
|
|
height="900"
|
|
viewBox="0 0 1600 900"
|
|
version="1.1"
|
|
id="svg43"
|
|
sodipodi:docname="archicratie-web-edition-edge-routing-verbatim-v2.svg"
|
|
inkscape:version="1.3-alpha (95f74fb, 2023-03-31)"
|
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
|
xmlns="http://www.w3.org/2000/svg"
|
|
xmlns:svg="http://www.w3.org/2000/svg">
|
|
<sodipodi:namedview
|
|
id="namedview43"
|
|
pagecolor="#ffffff"
|
|
bordercolor="#000000"
|
|
borderopacity="0.25"
|
|
inkscape:showpageshadow="2"
|
|
inkscape:pageopacity="0.0"
|
|
inkscape:pagecheckerboard="0"
|
|
inkscape:deskcolor="#d1d1d1"
|
|
inkscape:zoom="0.82625"
|
|
inkscape:cx="424.81089"
|
|
inkscape:cy="464.14523"
|
|
inkscape:window-width="1472"
|
|
inkscape:window-height="1022"
|
|
inkscape:window-x="234"
|
|
inkscape:window-y="30"
|
|
inkscape:window-maximized="0"
|
|
inkscape:current-layer="svg43" />
|
|
<defs
|
|
id="defs4">
|
|
<!-- Fond clair lisible partout -->
|
|
<linearGradient
|
|
id="bg"
|
|
x1="0"
|
|
y1="0"
|
|
x2="1"
|
|
y2="1">
|
|
<stop
|
|
offset="0"
|
|
stop-color="#ffffff"
|
|
id="stop1" />
|
|
<stop
|
|
offset="1"
|
|
stop-color="#f1f5f9"
|
|
id="stop2" />
|
|
</linearGradient>
|
|
<!-- Flèches -->
|
|
<marker
|
|
id="arrow"
|
|
markerWidth="10"
|
|
markerHeight="10"
|
|
refX="9"
|
|
refY="3"
|
|
orient="auto">
|
|
<path
|
|
d="M0,0 L9,3 L0,6 Z"
|
|
fill="#334155"
|
|
id="path2" />
|
|
</marker>
|
|
<marker
|
|
id="arrowA"
|
|
markerWidth="10"
|
|
markerHeight="10"
|
|
refX="9"
|
|
refY="3"
|
|
orient="auto">
|
|
<path
|
|
d="M0,0 L9,3 L0,6 Z"
|
|
fill="#2563eb"
|
|
id="path3" />
|
|
</marker>
|
|
<marker
|
|
id="arrowG"
|
|
markerWidth="10"
|
|
markerHeight="10"
|
|
refX="9"
|
|
refY="3"
|
|
orient="auto">
|
|
<path
|
|
d="M0,0 L9,3 L0,6 Z"
|
|
fill="#059669"
|
|
id="path4" />
|
|
</marker>
|
|
<!-- Styles SANS variables CSS (compat max) -->
|
|
<style
|
|
id="style4"><![CDATA[
|
|
.title{font:800 28px/1.2 system-ui,-apple-system,Segoe UI,Roboto,Arial;fill:#0f172a}
|
|
.subtitle{font:500 14px/1.3 system-ui,-apple-system,Segoe UI,Roboto,Arial;fill:#475569}
|
|
.h{font:800 16px/1.2 system-ui,-apple-system,Segoe UI,Roboto,Arial;fill:#0f172a}
|
|
.t{font:500 13px/1.35 system-ui,-apple-system,Segoe UI,Roboto,Arial;fill:#111827}
|
|
.s{font:500 12px/1.35 system-ui,-apple-system,Segoe UI,Roboto,Arial;fill:#475569}
|
|
.mono{font:600 12px/1.35 ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,'Liberation Mono','Courier New',monospace;fill:#0f172a}
|
|
|
|
/* Cadres lisibles */
|
|
.box{fill:#ffffff;stroke:#0ea5e9;stroke-width:1.4}
|
|
.box2{fill:#f8fafc;stroke:#94a3b8;stroke-width:1.2}
|
|
|
|
/* Pills */
|
|
.chip{fill:#dbeafe;stroke:#2563eb;stroke-width:1}
|
|
.chip2{fill:#d1fae5;stroke:#059669;stroke-width:1}
|
|
.chipW{fill:#fef3c7;stroke:#d97706;stroke-width:1}
|
|
.chipD{fill:#fee2e2;stroke:#dc2626;stroke-width:1}
|
|
|
|
/* Traits / flèches */
|
|
.line{stroke:#334155;stroke-width:1.4;fill:none}
|
|
.dash{stroke-dasharray:6 6}
|
|
.arrow{stroke:#334155;stroke-width:1.8;fill:none;marker-end:url(#arrow)}
|
|
.arrowA{stroke:#2563eb;stroke-width:2.0;fill:none;marker-end:url(#arrowA)}
|
|
.arrowG{stroke:#059669;stroke-width:2.0;fill:none;marker-end:url(#arrowG)}
|
|
]]></style>
|
|
</defs>
|
|
<rect
|
|
x="0"
|
|
y="0"
|
|
width="1600"
|
|
height="900"
|
|
fill="url(#bg)"
|
|
id="rect4" />
|
|
<text
|
|
x="40"
|
|
y="56"
|
|
class="title"
|
|
id="text4">Archicratie — Edge routing (v2, verbatim)</text>
|
|
<text
|
|
x="40"
|
|
y="84"
|
|
class="subtitle"
|
|
id="text5">Mise à jour 2026-02-20 — Host routing + Authelia + Blue/Green web_*</text>
|
|
<rect
|
|
x="40"
|
|
y="140"
|
|
width="420"
|
|
height="180"
|
|
class="box"
|
|
id="rect5" />
|
|
<text
|
|
x="58"
|
|
y="170"
|
|
class="h"
|
|
id="text6">Client (navigateur)</text>
|
|
<text
|
|
x="58"
|
|
y="194"
|
|
class="t"
|
|
id="text7">https://archicratie.* / https://staging.archicratie.*</text>
|
|
<text
|
|
x="58"
|
|
y="212"
|
|
class="t"
|
|
id="text8">cookies authelia_session</text>
|
|
<text
|
|
x="58"
|
|
y="230"
|
|
class="s"
|
|
id="text9">HEAD/GET → 302 si non auth</text>
|
|
<rect
|
|
x="60"
|
|
y="320"
|
|
width="110"
|
|
height="28"
|
|
class="chip2"
|
|
id="rect9" />
|
|
<text
|
|
x="74"
|
|
y="339"
|
|
class="mono"
|
|
id="text10">HTTPS 443</text>
|
|
<rect
|
|
x="520"
|
|
y="120"
|
|
width="520"
|
|
height="260"
|
|
class="box"
|
|
id="rect10" />
|
|
<text
|
|
x="538"
|
|
y="150"
|
|
class="h"
|
|
id="text11">Reverse-proxy (Nginx / DSM)</text>
|
|
<text
|
|
x="538"
|
|
y="174"
|
|
class="t"
|
|
id="text12">Routage par Host</text>
|
|
<text
|
|
x="538"
|
|
y="192"
|
|
class="t"
|
|
id="text13">auth_request → Authelia</text>
|
|
<text
|
|
x="538"
|
|
y="210"
|
|
class="t"
|
|
id="text14">proxy_pass → service web_blue ou web_green</text>
|
|
<text
|
|
x="538"
|
|
y="228"
|
|
class="t"
|
|
id="text15">headers: X-Forwarded-* + Host</text>
|
|
<text
|
|
x="538"
|
|
y="246"
|
|
class="s"
|
|
id="text16">en local: curl -H 'Host: ...' http://127.0.0.1:18080/</text>
|
|
<rect
|
|
x="540"
|
|
y="320"
|
|
width="142"
|
|
height="28"
|
|
class="chip"
|
|
id="rect16" />
|
|
<text
|
|
x="554"
|
|
y="339"
|
|
class="mono"
|
|
id="text17">auth_request</text>
|
|
<rect
|
|
x="520"
|
|
y="420"
|
|
width="520"
|
|
height="210"
|
|
class="box2"
|
|
id="rect17" />
|
|
<text
|
|
x="538"
|
|
y="450"
|
|
class="h"
|
|
id="text18">Auth stack</text>
|
|
<text
|
|
x="538"
|
|
y="474"
|
|
class="t"
|
|
id="text19">Authelia (portal login)</text>
|
|
<text
|
|
x="538"
|
|
y="492"
|
|
class="t"
|
|
id="text20">LLDAP (backend LDAP)</text>
|
|
<text
|
|
x="538"
|
|
y="510"
|
|
class="t"
|
|
id="text21">Redis (sessions / storage)</text>
|
|
<text
|
|
x="538"
|
|
y="528"
|
|
class="s"
|
|
id="text22">auth.* domain</text>
|
|
<rect
|
|
x="540"
|
|
y="600"
|
|
width="250"
|
|
height="28"
|
|
class="chipW"
|
|
id="rect22" />
|
|
<text
|
|
x="554"
|
|
y="619"
|
|
class="mono"
|
|
id="text23">302 → auth.*?rd=...</text>
|
|
<rect
|
|
x="1175.0378"
|
|
y="237.57942"
|
|
width="384.96219"
|
|
height="162.42058"
|
|
class="box"
|
|
id="rect23" />
|
|
<text
|
|
x="1198"
|
|
y="270"
|
|
class="h"
|
|
id="text24"
|
|
style="font-style:normal;font-variant:normal;font-weight:800;font-stretch:normal;font-size:16px;line-height:1.2;font-family:system-ui, '-apple-system', 'Segoe UI', Roboto, Arial">Service web_blue (container)</text>
|
|
<text
|
|
x="1198"
|
|
y="294"
|
|
class="mono"
|
|
id="text25"
|
|
style="font-style:normal;font-variant:normal;font-weight:600;font-stretch:normal;font-size:12px;line-height:1.35;font-family:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', monospace">nginx static (dist/)</text>
|
|
<text
|
|
x="1198"
|
|
y="312"
|
|
class="mono"
|
|
id="text26"
|
|
style="font-style:normal;font-variant:normal;font-weight:600;font-stretch:normal;font-size:12px;line-height:1.35;font-family:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', monospace">/pagefind/*, /assets/*</text>
|
|
<rect
|
|
x="1172.6172"
|
|
y="417.57944"
|
|
width="387.38275"
|
|
height="162.42058"
|
|
class="box"
|
|
id="rect26" />
|
|
<text
|
|
x="1198"
|
|
y="450"
|
|
class="h"
|
|
id="text27"
|
|
style="font-style:normal;font-variant:normal;font-weight:800;font-stretch:normal;font-size:16px;line-height:1.2;font-family:system-ui, '-apple-system', 'Segoe UI', Roboto, Arial">Service web_green (container)</text>
|
|
<text
|
|
x="1198"
|
|
y="474"
|
|
class="mono"
|
|
id="text28"
|
|
style="font-style:normal;font-variant:normal;font-weight:600;font-stretch:normal;font-size:12px;line-height:1.35;font-family:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', monospace">nginx static (dist/)</text>
|
|
<text
|
|
x="1198"
|
|
y="492"
|
|
class="mono"
|
|
id="text29"
|
|
style="font-style:normal;font-variant:normal;font-weight:600;font-stretch:normal;font-size:12px;line-height:1.35;font-family:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', monospace">build identique, couleur swap</text>
|
|
<rect
|
|
x="1120"
|
|
y="600"
|
|
width="230"
|
|
height="28"
|
|
class="chip2"
|
|
id="rect29" />
|
|
<text
|
|
x="1134"
|
|
y="619"
|
|
class="mono"
|
|
id="text30"
|
|
style="font-style:normal;font-variant:normal;font-weight:600;font-stretch:normal;font-size:12px;line-height:1.35;font-family:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', monospace">une seule couleur active</text>
|
|
<rect
|
|
x="40"
|
|
y="410"
|
|
width="420"
|
|
height="220"
|
|
class="box2"
|
|
id="rect30" />
|
|
<text
|
|
x="58"
|
|
y="440"
|
|
class="h"
|
|
id="text31">Atelier DEV (local)</text>
|
|
<text
|
|
x="58"
|
|
y="464"
|
|
class="mono"
|
|
id="text32">astro dev : http://localhost:4321</text>
|
|
<text
|
|
x="58"
|
|
y="482"
|
|
class="mono"
|
|
id="text33">pas d'authelia</text>
|
|
<text
|
|
x="58"
|
|
y="500"
|
|
class="mono"
|
|
id="text34">predev génère:</text>
|
|
<text
|
|
x="58"
|
|
y="518"
|
|
class="mono"
|
|
id="text35"> /annotations-index.json</text>
|
|
<text
|
|
x="58"
|
|
y="536"
|
|
class="mono"
|
|
id="text36"> /para-index.json</text>
|
|
<text
|
|
x="58"
|
|
y="554"
|
|
class="s"
|
|
id="text37">404 = index manquant (relancer predev/dev)</text>
|
|
<path
|
|
d="M460 230 C500 230 500 230 520 230"
|
|
class="arrow"
|
|
id="path37" />
|
|
<text
|
|
x="465"
|
|
y="210"
|
|
class="s"
|
|
id="text38"
|
|
style="font-style:normal;font-variant:normal;font-weight:500;font-stretch:normal;font-size:12px;line-height:1.35;font-family:system-ui, '-apple-system', 'Segoe UI', Roboto, Arial"><tspan
|
|
style="font-size:14.6667px"
|
|
id="tspan45">requête</tspan></text>
|
|
<path
|
|
d="M780 380 C780 410 780 410 780 420"
|
|
class="arrow"
|
|
id="path38" />
|
|
<text
|
|
x="795"
|
|
y="410"
|
|
class="s"
|
|
id="text39">auth_request</text>
|
|
<path
|
|
d="m 1040,332 h 132.6172"
|
|
class="arrowA"
|
|
id="path39"
|
|
sodipodi:nodetypes="cc" />
|
|
<path
|
|
d="m 1040,464 131.407,2.42057"
|
|
class="arrowA"
|
|
id="path40"
|
|
sodipodi:nodetypes="cc" />
|
|
<text
|
|
x="1045"
|
|
y="317"
|
|
class="s"
|
|
id="text40"
|
|
style="font-style:normal;font-variant:normal;font-weight:500;font-stretch:normal;font-size:12px;line-height:1.35;font-family:system-ui, '-apple-system', 'Segoe UI', Roboto, Arial"><tspan
|
|
style="font-size:14.6667px"
|
|
id="tspan44">proxy_pass (active)</tspan></text>
|
|
<path
|
|
d="M780 630 C780 700 340 700 250 630"
|
|
class="arrow"
|
|
id="path41" />
|
|
<text
|
|
x="462.36005"
|
|
y="707.89716"
|
|
class="s"
|
|
id="text41"
|
|
style="font-style:normal;font-variant:normal;font-weight:500;font-stretch:normal;font-size:12px;line-height:1.35;font-family:system-ui, '-apple-system', 'Segoe UI', Roboto, Arial"><tspan
|
|
id="tspan43"
|
|
style="font-size:14.6667px">callback + cookie</tspan></text>
|
|
<rect
|
|
x="40"
|
|
y="820"
|
|
width="1520"
|
|
height="60"
|
|
class="box2"
|
|
id="rect41" />
|
|
<text
|
|
x="58"
|
|
y="850"
|
|
class="h"
|
|
id="text42">Note importante (debug)</text>
|
|
<text
|
|
x="58"
|
|
y="874"
|
|
class="s"
|
|
id="text43">Si tu testes via loopback (127.0.0.1:18080), la directive Host détermine la vhost. Sans Host correct, tu peux tomber sur une autre conf.</text>
|
|
</svg>
|