{"id":5022,"date":"2026-10-08T08:00:00","date_gmt":"2026-10-08T08:00:00","guid":{"rendered":"https:\/\/netguide.io\/linux\/?p=5022"},"modified":"2026-10-08T08:00:00","modified_gmt":"2026-10-08T08:00:00","slug":"nginx-reverse-proxy-konfigurieren","status":"publish","type":"post","link":"https:\/\/netguide.io\/linux\/de\/nginx-reverse-proxy-konfigurieren\/","title":{"rendered":"Nginx als Reverse Proxy konfigurieren \u2013 Anleitung"},"content":{"rendered":"<script type=\"text\/plain\" data-tcf=\"waiting-for-consent\" data-id=\"4797\" data-bid=\"2\" data-placement=\"4798\">PGRpdiBpZD0ibmV0Z3VpZGVhLTM0NzY2MDAzNTIiIGNsYXNzPSJuZXRndWlkZWEtYmVmb3JlLWNvbnRlbnQgbmV0Z3VpZGVhLWVudGl0eS1wbGFjZW1lbnQiPjxkaXYgY2xhc3M9Im5ldGd1aWRlYS1hZGxhYmVsIj5BZHZlcnRpc2VtZW50czwvZGl2PjxzY3JpcHQgYXN5bmMgc3JjPSIvL3BhZ2VhZDIuZ29vZ2xlc3luZGljYXRpb24uY29tL3BhZ2VhZC9qcy9hZHNieWdvb2dsZS5qcz9jbGllbnQ9Y2EtcHViLTYyNTg1NTYyNTcyNDU5OTgiIGNyb3Nzb3JpZ2luPSJhbm9ueW1vdXMiPjwvc2NyaXB0PjxpbnMgY2xhc3M9ImFkc2J5Z29vZ2xlIiBzdHlsZT0iZGlzcGxheTpibG9jazsiIGRhdGEtYWQtY2xpZW50PSJjYS1wdWItNjI1ODU1NjI1NzI0NTk5OCIgCmRhdGEtYWQtc2xvdD0iMzQ5NDExNTM0MiIgCmRhdGEtYWQtZm9ybWF0PSJhdXRvIj48L2lucz4KPHNjcmlwdD4gCihhZHNieWdvb2dsZSA9IHdpbmRvdy5hZHNieWdvb2dsZSB8fCBbXSkucHVzaCh7fSk7IAo8L3NjcmlwdD4KPC9kaXY+<\/script>\n<p class=\"wp-block-paragraph\">Ein Reverse Proxy nimmt Anfragen aus dem Internet entgegen und leitet sie an interne Dienste weiter \u2013 Nginx ist daf\u00fcr der Klassiker. In dieser Anleitung zeigen wir dir Schritt f\u00fcr Schritt, wie du <strong>Nginx als Reverse Proxy konfigurierst<\/strong>: vom Server-Block \u00fcber <code>proxy_pass<\/code> und die wichtigen Weiterleitungs-Header bis zum Aktivieren der Konfiguration.<\/p>\n\n\n\t\t\t\t<div class=\"wp-block-uagb-table-of-contents uagb-toc__align-left uagb-toc__columns-1  uagb-block-1ffd1ad5      \"\n\t\t\t\t\tdata-scroll= \"1\"\n\t\t\t\t\tdata-offset= \"30\"\n\t\t\t\t\tstyle=\"\"\n\t\t\t\t>\n\t\t\t\t<div class=\"uagb-toc__wrap\">\n\t\t\t\t\t\t<div class=\"uagb-toc__title\">\n\t\t\t\t\t\t\tInhaltsverzeichnis\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"uagb-toc__list-wrap \">\n\t\t\t\t\t\t<ol class=\"uagb-toc__list\"><li class=\"uagb-toc__list\"><a href=\"#was-macht-ein-reverse-proxy\" class=\"uagb-toc-link__trigger\">Was macht ein Reverse Proxy?<\/a><li class=\"uagb-toc__list\"><a href=\"#schritt-1-nginx-installieren\" class=\"uagb-toc-link__trigger\">Schritt 1: Nginx installieren<\/a><li class=\"uagb-toc__list\"><a href=\"#schritt-2-einen-server-block-anlegen\" class=\"uagb-toc-link__trigger\">Schritt 2: Einen Server-Block anlegen<\/a><li class=\"uagb-toc__list\"><a href=\"#schritt-3-die-weiterleitungs-header-verstehen\" class=\"uagb-toc-link__trigger\">Schritt 3: Die Weiterleitungs-Header verstehen<\/a><li class=\"uagb-toc__list\"><a href=\"#schritt-4-konfiguration-aktivieren\" class=\"uagb-toc-link__trigger\">Schritt 4: Konfiguration aktivieren<\/a><li class=\"uagb-toc__list\"><a href=\"#https-nicht-vergessen\" class=\"uagb-toc-link__trigger\">HTTPS nicht vergessen<\/a><li class=\"uagb-toc__list\"><a href=\"#mehrere-dienste-unter-subdomains\" class=\"uagb-toc-link__trigger\">Mehrere Dienste unter Subdomains<\/a><li class=\"uagb-toc__list\"><a href=\"#h\u00e4ufige-fragen\" class=\"uagb-toc-link__trigger\">H\u00e4ufige Fragen<\/a><li class=\"uagb-toc__list\"><a href=\"#warum-bekomme-ich-einen-502-bad-gateway\" class=\"uagb-toc-link__trigger\">Warum bekomme ich einen 502 Bad Gateway?<\/a><li class=\"uagb-toc__list\"><a href=\"#nginx-oder-ein-tool-wie-traefikcaddy\" class=\"uagb-toc-link__trigger\">Nginx oder ein Tool wie Traefik\/Caddy?<\/a><li class=\"uagb-toc__list\"><a href=\"#muss-ich-nginx-nach-jeder-\u00e4nderung-neu-starten\" class=\"uagb-toc-link__trigger\">Muss ich Nginx nach jeder \u00c4nderung neu starten?<\/a><li class=\"uagb-toc__list\"><a href=\"#fazit\" class=\"uagb-toc-link__trigger\">Fazit<\/a><\/ol>\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Was macht ein Reverse Proxy?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Ein Reverse Proxy sitzt vor deinen Anwendungen und ist der einzige Dienst, der nach au\u00dfen lauscht. Er nimmt HTTP(S)-Anfragen an und reicht sie intern an den passenden Dienst weiter \u2013 etwa eine App auf Port 3000 oder einen Docker-Container. Das bringt zentrale Vorteile: einheitliche TLS-Verschl\u00fcsselung, mehrere Dienste unter einer IP und ein zus\u00e4tzlicher Schutzschild vor den Anwendungen.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">Schritt 1: Nginx installieren<\/h3>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#24292e\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#e1e4e8;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>sudo apt update\nsudo apt install -y nginx<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-dark\" style=\"background-color: #24292e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #B392F0\">sudo<\/span><span style=\"color: #9ECBFF\"> apt<\/span><span style=\"color: #9ECBFF\"> update<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">sudo<\/span><span style=\"color: #9ECBFF\"> apt<\/span><span style=\"color: #9ECBFF\"> install<\/span><span style=\"color: #79B8FF\"> -y<\/span><span style=\"color: #9ECBFF\"> nginx<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">Schritt 2: Einen Server-Block anlegen<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Konfigurationen liegen unter <code>\/etc\/nginx\/sites-available\/<\/code>. Lege eine Datei f\u00fcr deine Domain an:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#24292e\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#e1e4e8;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>sudo nano \/etc\/nginx\/sites-available\/app.example.de<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-dark\" style=\"background-color: #24292e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #B392F0\">sudo<\/span><span style=\"color: #9ECBFF\"> nano<\/span><span style=\"color: #9ECBFF\"> \/etc\/nginx\/sites-available\/app.example.de<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Der folgende Server-Block leitet alle Anfragen an einen lokal auf Port 3000 laufenden Dienst weiter:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#24292e\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#e1e4e8;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>server {\n    listen 80;\n    server_name app.example.de;\n\n    location \/ {\n        proxy_pass http:\/\/127.0.0.1:3000;\n        proxy_set_header Host $host;\n        proxy_set_header X-Real-IP $remote_addr;\n        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n        proxy_set_header X-Forwarded-Proto $scheme;\n    }\n}<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-dark\" style=\"background-color: #24292e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #F97583\">server<\/span><span style=\"color: #E1E4E8\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F97583\">    listen <\/span><span style=\"color: #79B8FF\">80<\/span><span style=\"color: #E1E4E8\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F97583\">    server_name <\/span><span style=\"color: #E1E4E8\">app.example.de;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #F97583\">    location<\/span><span style=\"color: #B392F0\"> \/ <\/span><span style=\"color: #E1E4E8\">{<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F97583\">        proxy_pass <\/span><span style=\"color: #E1E4E8\">http:\/\/127.0.0.1:3000;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F97583\">        proxy_set_header <\/span><span style=\"color: #E1E4E8\">Host $host;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F97583\">        proxy_set_header <\/span><span style=\"color: #E1E4E8\">X-Real-IP $remote_addr;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F97583\">        proxy_set_header <\/span><span style=\"color: #E1E4E8\">X-Forwarded-For $proxy_add_x_forwarded_for;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F97583\">        proxy_set_header <\/span><span style=\"color: #E1E4E8\">X-Forwarded-Proto $scheme;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">    }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #E1E4E8\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">Schritt 3: Die Weiterleitungs-Header verstehen<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Die <code>proxy_set_header<\/code>-Zeilen sind entscheidend, damit die Anwendung dahinter korrekt arbeitet:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Header<\/th><th>Zweck<\/th><\/tr><\/thead><tbody><tr><td><code>Host<\/code><\/td><td>\u00dcbergibt den urspr\u00fcnglich angefragten Hostnamen<\/td><\/tr><tr><td><code>X-Real-IP<\/code><\/td><td>Die echte IP des Besuchers (statt der des Proxys)<\/td><\/tr><tr><td><code>X-Forwarded-For<\/code><\/td><td>Kette aller weiterleitenden Proxys<\/td><\/tr><tr><td><code>X-Forwarded-Proto<\/code><\/td><td>Ob die Anfrage per http oder https kam<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Ohne diese Header sieht die Anwendung nur den Proxy und generiert z. B. falsche Links oder Logs.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">Schritt 4: Konfiguration aktivieren<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Aktiviere die Seite per Symlink nach <code>sites-enabled<\/code>, pr\u00fcfe die Syntax und lade Nginx neu:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#24292e\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#e1e4e8;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>sudo ln -s \/etc\/nginx\/sites-available\/app.example.de \/etc\/nginx\/sites-enabled\/\nsudo nginx -t\nsudo systemctl reload nginx<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-dark\" style=\"background-color: #24292e\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #B392F0\">sudo<\/span><span style=\"color: #9ECBFF\"> ln<\/span><span style=\"color: #79B8FF\"> -s<\/span><span style=\"color: #9ECBFF\"> \/etc\/nginx\/sites-available\/app.example.de<\/span><span style=\"color: #9ECBFF\"> \/etc\/nginx\/sites-enabled\/<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">sudo<\/span><span style=\"color: #9ECBFF\"> nginx<\/span><span style=\"color: #79B8FF\"> -t<\/span><\/span>\n<span class=\"line\"><span style=\"color: #B392F0\">sudo<\/span><span style=\"color: #9ECBFF\"> systemctl<\/span><span style=\"color: #9ECBFF\"> reload<\/span><span style=\"color: #9ECBFF\"> nginx<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Der Test <code>nginx -t<\/code> ist Pflicht \u2013 er verhindert, dass ein Tippfehler den Webserver lahmlegt. Mehr dazu in <a href=\"https:\/\/netguide.io\/linux\/de\/nginx-config-aktivieren\/\">Nginx Config aktivieren<\/a>.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">HTTPS nicht vergessen<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Bisher l\u00e4uft alles unverschl\u00fcsselt \u00fcber Port 80. F\u00fcr den produktiven Einsatz brauchst du ein TLS-Zertifikat \u2013 am einfachsten kostenlos \u00fcber <a href=\"https:\/\/netguide.io\/linux\/de\/lets-encrypt-certbot-zertifikat\/\">Let\u2019s Encrypt mit Certbot<\/a>, das die Nginx-Konfiguration sogar automatisch anpasst.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">Mehrere Dienste unter Subdomains<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Der eigentliche Nutzen zeigt sich, wenn du mehrere Anwendungen betreibst. F\u00fcr jede Subdomain legst du einfach einen eigenen Server-Block mit passendem <code>server_name<\/code> und <code>proxy_pass<\/code> an. So laufen etwa <code>cloud.example.de<\/code> und <code>blog.example.de<\/code> \u00fcber dieselbe IP, aber auf unterschiedlichen internen Ports. Nginx entscheidet anhand des angefragten Hostnamens, an welchen Dienst er weiterleitet.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Betreibst du Anwendungen mit Live-Verbindungen (etwa Chats oder Dashboards), brauchst du zus\u00e4tzlich die WebSocket-Weiterleitung. Erg\u00e4nze im <code>location<\/code>-Block <code>proxy_set_header Upgrade $http_upgrade;<\/code> und <code>proxy_set_header Connection \"upgrade\";<\/code>, damit die Verbindung nicht abbricht.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">H\u00e4ufige Fragen<\/h3>\n\n\n\n<h3 class=\"wp-block-heading\">Warum bekomme ich einen 502 Bad Gateway?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Das bedeutet, Nginx erreicht den Backend-Dienst nicht. Pr\u00fcfe, ob die Anwendung wirklich auf der in <code>proxy_pass<\/code> angegebenen Adresse und dem Port l\u00e4uft und nicht durch eine Firewall blockiert wird.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Nginx oder ein Tool wie Traefik\/Caddy?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Nginx bietet volle Kontrolle per Textkonfiguration. F\u00fcr dynamische Docker-Umgebungen ist <a href=\"https:\/\/netguide.io\/linux\/de\/traefik-reverse-proxy-docker-einrichten\/\">Traefik<\/a> bequemer, f\u00fcr minimale Konfiguration <a href=\"https:\/\/netguide.io\/linux\/de\/caddy-reverse-proxy-https-einrichten\/\">Caddy<\/a>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Muss ich Nginx nach jeder \u00c4nderung neu starten?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Nein, ein <code>systemctl reload nginx<\/code> gen\u00fcgt und l\u00e4dt die Konfiguration ohne Verbindungsabbruch neu. Ein voller Neustart ist nur selten n\u00f6tig.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">Fazit<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Mit einem sauberen Server-Block, <code>proxy_pass<\/code> und den richtigen Weiterleitungs-Headern ist Nginx als Reverse Proxy schnell eingerichtet. Denk an <code>nginx -t<\/code> vor jedem Reload und an ein TLS-Zertifikat f\u00fcr den Produktivbetrieb. Damit machst du beliebig viele interne Dienste sicher \u00fcber eine Adresse erreichbar.<\/p>\n<script type=\"text\/plain\" data-tcf=\"waiting-for-consent\" data-id=\"4799\" data-bid=\"2\" data-placement=\"4800\">PGRpdiBpZD0ibmV0Z3VpZGVhLTM1MDIzOTk3NTciIGNsYXNzPSJuZXRndWlkZWEtYWZ0ZXItY29udGVudCBuZXRndWlkZWEtZW50aXR5LXBsYWNlbWVudCI+PGRpdiBjbGFzcz0ibmV0Z3VpZGVhLWFkbGFiZWwiPkFkdmVydGlzZW1lbnRzPC9kaXY+PHNjcmlwdCBhc3luYyBzcmM9Ii8vcGFnZWFkMi5nb29nbGVzeW5kaWNhdGlvbi5jb20vcGFnZWFkL2pzL2Fkc2J5Z29vZ2xlLmpzP2NsaWVudD1jYS1wdWItNjI1ODU1NjI1NzI0NTk5OCIgY3Jvc3NvcmlnaW49ImFub255bW91cyI+PC9zY3JpcHQ+PGlucyBjbGFzcz0iYWRzYnlnb29nbGUiIHN0eWxlPSJkaXNwbGF5OmJsb2NrOyIgZGF0YS1hZC1jbGllbnQ9ImNhLXB1Yi02MjU4NTU2MjU3MjQ1OTk4IiAKZGF0YS1hZC1zbG90PSI0NTU5Nzg1MDAyIiAKZGF0YS1hZC1mb3JtYXQ9ImF1dG8iPjwvaW5zPgo8c2NyaXB0PiAKKGFkc2J5Z29vZ2xlID0gd2luZG93LmFkc2J5Z29vZ2xlIHx8IFtdKS5wdXNoKHt9KTsgCjwvc2NyaXB0Pgo8L2Rpdj4=<\/script>","protected":false},"excerpt":{"rendered":"<p>Nginx als Reverse Proxy konfigurieren: Server-Block anlegen, per proxy_pass an ein Backend weiterleiten, wichtige Header setzen und die Config aktivieren.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_affilinode_tracking":"","_affilinode_autolink_off":false,"_affilinode_rating":"","_uag_custom_page_level_css":"","site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[9],"tags":[],"class_list":["post-5022","post","type-post","status-publish","format-standard","hentry","category-linux"],"uagb_featured_image_src":{"full":false,"thumbnail":false,"medium":false,"medium_large":false,"large":false,"1536x1536":false,"2048x2048":false},"uagb_author_info":{"display_name":"Tobias","author_link":"https:\/\/netguide.io\/linux\/author\/tobias-pries\/"},"uagb_comment_info":0,"uagb_excerpt":"Nginx als Reverse Proxy konfigurieren: Server-Block anlegen, per proxy_pass an ein Backend weiterleiten, wichtige Header setzen und die Config aktivieren.","brizy_media":[],"_links":{"self":[{"href":"https:\/\/netguide.io\/linux\/wp-json\/wp\/v2\/posts\/5022","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/netguide.io\/linux\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/netguide.io\/linux\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/netguide.io\/linux\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/netguide.io\/linux\/wp-json\/wp\/v2\/comments?post=5022"}],"version-history":[{"count":1,"href":"https:\/\/netguide.io\/linux\/wp-json\/wp\/v2\/posts\/5022\/revisions"}],"predecessor-version":[{"id":5559,"href":"https:\/\/netguide.io\/linux\/wp-json\/wp\/v2\/posts\/5022\/revisions\/5559"}],"wp:attachment":[{"href":"https:\/\/netguide.io\/linux\/wp-json\/wp\/v2\/media?parent=5022"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/netguide.io\/linux\/wp-json\/wp\/v2\/categories?post=5022"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/netguide.io\/linux\/wp-json\/wp\/v2\/tags?post=5022"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}