3.5 KB213 lines
Blame
1{
2 on_demand_tls {
3 ask http://grove-api:4000/api/pages/ask
4 }
5}
6
7thegild.app {
8 root * /opt/gild/web
9 file_server
10
11 header {
12 X-Content-Type-Options nosniff
13 X-Frame-Options DENY
14 }
15}
16
17staging.thegild.app {
18 root * /opt/gild-staging/web
19 file_server
20
21 header {
22 X-Content-Type-Options nosniff
23 X-Frame-Options DENY
24 X-Robots-Tag "noindex, nofollow"
25 }
26}
27
28collab.{$DOMAIN} {
29 handle /socket.io/* {
30 reverse_proxy grove-web:3334
31 }
32
33 handle /api/auth/* {
34 reverse_proxy hub-api:4000
35 }
36
37 handle /api/repos {
38 reverse_proxy grove-api:4000
39 }
40
41 handle /api/repos/* {
42 reverse_proxy grove-api:4000
43 }
44
45 handle {
46 reverse_proxy grove-web:3000
47 }
48
49 header {
50 X-Content-Type-Options nosniff
51 X-Frame-Options DENY
52 }
53}
54
55canopy.{$DOMAIN} {
56 handle /api/auth/* {
57 reverse_proxy hub-api:4000
58 }
59
60 handle /api/canopy/* {
61 reverse_proxy grove-api:4000
62 }
63
64 handle /api/repos {
65 reverse_proxy grove-api:4000
66 }
67
68 handle /api/repos/* {
69 reverse_proxy grove-api:4000
70 }
71
72 handle {
73 reverse_proxy grove-web:3000
74 }
75
76 header {
77 X-Content-Type-Options nosniff
78 X-Frame-Options DENY
79 }
80}
81
82ring.{$DOMAIN} {
83 handle /api/auth/* {
84 reverse_proxy hub-api:4000
85 }
86
87 handle /api/ring/* {
88 reverse_proxy grove-api:4000
89 }
90
91 handle /api/repos {
92 reverse_proxy grove-api:4000
93 }
94
95 handle /api/repos/* {
96 reverse_proxy grove-api:4000
97 }
98
99 handle {
100 reverse_proxy grove-web:3000
101 }
102
103 header {
104 X-Content-Type-Options nosniff
105 X-Frame-Options DENY
106 }
107}
108
109isl.{$DOMAIN} {
110 handle /ws {
111 reverse_proxy 172.18.0.1:3011 {
112 header_down -X-Frame-Options
113 }
114 }
115
116 handle {
117 reverse_proxy 172.18.0.1:3011 {
118 header_down -X-Frame-Options
119 }
120 }
121
122 header {
123 X-Content-Type-Options nosniff
124 Content-Security-Policy "frame-ancestors https://grove.host https://*.grove.host http://grove.test:*"
125 }
126}
127
128{$DOMAIN} {
129 handle /v2/* {
130 reverse_proxy registry:5000
131 }
132
133 handle /api/canopy/* {
134 reverse_proxy grove-api:4000
135 }
136
137 handle /api/auth/* {
138 reverse_proxy hub-api:4000
139 }
140
141 handle /api/instances {
142 reverse_proxy hub-api:4000
143 }
144
145 handle /api/instances/* {
146 reverse_proxy hub-api:4000
147 }
148
149 handle /api/orgs {
150 reverse_proxy hub-api:4000
151 }
152
153 handle /api/orgs/* {
154 reverse_proxy hub-api:4000
155 }
156
157 handle /api/repos {
158 reverse_proxy grove-api:4000
159 }
160
161 handle /api/repos/* {
162 reverse_proxy grove-api:4000
163 }
164
165 handle /api/pages/* {
166 reverse_proxy grove-api:4000
167 }
168
169 handle /downloads/* {
170 root * /srv
171 file_server
172 }
173
174 handle /health {
175 reverse_proxy hub-api:4000
176 }
177
178 handle {
179 reverse_proxy grove-web:3000
180 }
181
182 header {
183 X-Content-Type-Options nosniff
184 X-Frame-Options DENY
185 }
186}
187
188# Grove Pages — path-based default hosting at pages.grove.host/{owner}/{repo}
189pages.{$DOMAIN} {
190 root * /srv/pages/sites/_pages
191 file_server browse
192
193 header {
194 X-Content-Type-Options nosniff
195 X-Frame-Options SAMEORIGIN
196 }
197}
198
199# Grove Pages — custom domains
200:443 {
201 tls {
202 on_demand
203 }
204
205 root * /srv/pages/sites/{host}
206 file_server browse
207
208 header {
209 X-Content-Type-Options nosniff
210 X-Frame-Options SAMEORIGIN
211 }
212}
213