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