Hi! 
Issue: Ik krijg Nginx maar niet zover om de assets (fonts, images) van de errorpages te tonen en ik kan niet zo goed pinpointen waar het precies misgaat.
Please bare with me, de setup kost wat regels om uit te leggen
De applicatie die ik aan het deployen ben bestaat uit meerdere modules. Ieder van die modules is accessible dmv een REST API. Al die modules draaien intern op verschillende poorten (potentieel op verschillende hosts zelfs) en worden via Nginx als reverse proxy aangesproken.
Een (versimpeld) stukje filedirectory:
(Poorten zijn fictief en dienen slechts ter illustratie)
De (wederom versimpelde) Nginx setup ziet er als volgt uit:
Ok, dus wat gebeurt er nu precies? De frontend van de webapplicatie werkt prima, draait op poort 443, en alle afzonderlijke modules worden netjes door-gereverse-proxied. Maar in het geval van een error (in dit geval een 502 error) die wordt veroorzaakt in welke module dan ook, wordt de correcte error_page wel weergegeven (index.html in de map /webroot/errorpages/), alleen worden niet de images getoond of de correcte fonts gebruikt. In de network tabs van de diverse developer tools (chrome / firefox) zie ik dat al die resources (wederom) een http 502 opleveren.
Iemand?
Issue: Ik krijg Nginx maar niet zover om de assets (fonts, images) van de errorpages te tonen en ik kan niet zo goed pinpointen waar het precies misgaat.
Please bare with me, de setup kost wat regels om uit te leggen
De applicatie die ik aan het deployen ben bestaat uit meerdere modules. Ieder van die modules is accessible dmv een REST API. Al die modules draaien intern op verschillende poorten (potentieel op verschillende hosts zelfs) en worden via Nginx als reverse proxy aangesproken.
Een (versimpeld) stukje filedirectory:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
| /webroot ├── errorpages │ ├── fonts │ │ ├── ... │ ├── img │ │ ├── ... │ └── index.html ├── module1 │ └── module1_executable (opent poort 5556) ├── module2 │ └── module2_executable (opent poort 5557) ├── module3 │ ├── module3_executable (opent poort 5558) │ └── static │ ├── email_template.html │ ├── [...] │ └── styles.css ├── module4 │ └── module4_executable (opent poort 5559) └── webapp_directory ├── static │ └── dist └── webapp_executable (opent poort 5560) |
(Poorten zijn fictief en dienen slechts ter illustratie)
De (wederom versimpelde) Nginx setup ziet er als volgt uit:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
| upstream application { server www.xxx.yyy.zzz:5560; } upstream module1 { server www.xxx.yyy.zzz:5556; } upstream module2 { server www.xxx.yyy.zzz:5557; } upstream module3 { server www.xxx.yyy.zzz:5558; } upstream module4 { server www.xxx.yyy.zzz:5559; } server { listen 443 ssl http2; location / { rewrite /(.*) /$1 break; proxy_pass https://application/; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Port $server_port; } location /module1/ { rewrite /module1/(.*) /$1 break; proxy_pass http://module1/; } location /module2/ { rewrite /module2/(.*) /$1 break; proxy_pass http://module2/; } location /module3/ { rewrite /module3/(.*) /$1 break; proxy_pass http://module3/; } location /module4/ { rewrite /module4/(.*) /$1 break; proxy_pass http://module4/; } ## Errors -> Locations error_page 502 /errorpages/index.html; location = /errorpages/index.html { return 502 $scheme://$host/; try_files /50x.html @error; internal; } ## Fallback Directory location @error { proxy_intercept_errors on; root /webroot/errorpages/; try_files $uri /index.html /index.html; internal; } } |
Ok, dus wat gebeurt er nu precies? De frontend van de webapplicatie werkt prima, draait op poort 443, en alle afzonderlijke modules worden netjes door-gereverse-proxied. Maar in het geval van een error (in dit geval een 502 error) die wordt veroorzaakt in welke module dan ook, wordt de correcte error_page wel weergegeven (index.html in de map /webroot/errorpages/), alleen worden niet de images getoond of de correcte fonts gebruikt. In de network tabs van de diverse developer tools (chrome / firefox) zie ik dat al die resources (wederom) een http 502 opleveren.
Iemand?
wil een Toyota Supra mkIV!!!!! | wil een Yamaha YZF-R{1,6} | wil stiekem ook een Ducati
"Security is just a state of mind"
PSN: scorpie | Diablo 3: scorpie#2470