Physically
Lt. Commander
- Registriert
- Nov. 2010
- Beiträge
- 1.708
Nabend,
ich habe einen Ubuntu-Server laufen mit Nginx installiert, der als Reverse Proxy dient. Alle Anfragen an https://example.de werden von Nginx weitergeleitet nach http://localhost:3000. HTTP-Anfragen werden immer weitergeleitet auf die HTTPS URI.
Unter Port 3000 läuft eine Server-Side-Rendered App (Nuxt). Das funktioniert soweit. Die App kommuniziert über eine API (Node) mit dem Backend. Das Backend läuft unter Port 8080 und ist erreichbar unter http://localhost:8080.
So wie ich das verstehe, bilden Frontend und Backend hinter dem Reverse Proxy für sich ein lokales Netzwerk sodass sie problemlos untereinander kommunizieren können. Das Problem ist, dass jede API-Anfrage an das Backend geblockt wird.
In den Chrome Dev Tools heißt es:
net::ERR_CONNECTION_REFUSED
In den Mozilla Dev Tools:
Quellübergreifende (Cross-Origin) Anfrage blockiert: Die Gleiche-Quelle-Regel verbietet das Lesen der externen Ressource auf http://127.0.0.1:8080/api/videos/all. (Grund: CORS-Anschlag schlug fehl).
Laut den MDN web docs scheint das ein Problem mit der Anfrage von HTTPS auf HTTP zu sein. Der Node-Server hat eine Wildcard gesetzt in Bezug auf CORS.
Ich habe jetzt den gesamten Tag mit Recherche verbracht aber die meisten Leute haben einfach nur eine Instanz hinter den Reverse Proxy und das wars. Mein Szenario ist mir bis jetzt nicht vor die Augen gekommen.
netstat -plnt gibt folgendes
Scheint als würden alle Beteiligten laufen und "listen".
Hier die Nginx-config (/etc/nginx/sites-available/default):
Und zu guter letzt noch eine Skizze:
[IMG]https://pics.computerbase.de/forum/attachments/774/774343-2fcbd25168a4fc0ab43526e4ed99d767.jpg[/IMG]
Danke für jegliche Hilfe!
ich habe einen Ubuntu-Server laufen mit Nginx installiert, der als Reverse Proxy dient. Alle Anfragen an https://example.de werden von Nginx weitergeleitet nach http://localhost:3000. HTTP-Anfragen werden immer weitergeleitet auf die HTTPS URI.
Unter Port 3000 läuft eine Server-Side-Rendered App (Nuxt). Das funktioniert soweit. Die App kommuniziert über eine API (Node) mit dem Backend. Das Backend läuft unter Port 8080 und ist erreichbar unter http://localhost:8080.
So wie ich das verstehe, bilden Frontend und Backend hinter dem Reverse Proxy für sich ein lokales Netzwerk sodass sie problemlos untereinander kommunizieren können. Das Problem ist, dass jede API-Anfrage an das Backend geblockt wird.
In den Chrome Dev Tools heißt es:
net::ERR_CONNECTION_REFUSED
In den Mozilla Dev Tools:
Quellübergreifende (Cross-Origin) Anfrage blockiert: Die Gleiche-Quelle-Regel verbietet das Lesen der externen Ressource auf http://127.0.0.1:8080/api/videos/all. (Grund: CORS-Anschlag schlug fehl).
Laut den MDN web docs scheint das ein Problem mit der Anfrage von HTTPS auf HTTP zu sein. Der Node-Server hat eine Wildcard gesetzt in Bezug auf CORS.
Ich habe jetzt den gesamten Tag mit Recherche verbracht aber die meisten Leute haben einfach nur eine Instanz hinter den Reverse Proxy und das wars. Mein Szenario ist mir bis jetzt nicht vor die Augen gekommen.
netstat -plnt gibt folgendes
Code:
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN -
tcp 0 0 127.0.0.1:8080 0.0.0.0:* LISTEN 2058/node /home/ben
tcp 0 0 127.0.0.53:53 0.0.0.0:* LISTEN -
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN -
tcp 0 0 127.0.0.1:3000 0.0.0.0:* LISTEN 1106/node
tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN -
tcp6 0 0 :::80 :::* LISTEN -
tcp6 0 0 :::22 :::* LISTEN -
tcp6 0 0 :::443 :::* LISTEN -
Scheint als würden alle Beteiligten laufen und "listen".
Hier die Nginx-config (/etc/nginx/sites-available/default):
Code:
upstream backend {
server localhost:8080;
}
upstream frontend {
server localhost:3000;
}
server {
server_name example.de www.example.de;
location / {
proxy_pass http://frontend;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
}
listen [::]:443 ssl ipv6only=on; # managed by Certbot
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/example.de/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/example.de/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}
server {
server_name example.de www.example.de;
listen 80;
listen [::]:80;
if ($host = www.example.de) {
return 301 https://$host$request_uri;
} # managed by Certbot
if ($host = example.de) {
return 301 https://$host$request_uri;
} # managed by Certbot
}
Und zu guter letzt noch eine Skizze:
[IMG]https://pics.computerbase.de/forum/attachments/774/774343-2fcbd25168a4fc0ab43526e4ed99d767.jpg[/IMG]
Danke für jegliche Hilfe!