{"id":8941,"date":"2022-05-23T23:35:08","date_gmt":"2022-05-23T21:35:08","guid":{"rendered":"https:\/\/u-labs.de\/portal\/?p=8941"},"modified":"2022-12-12T14:42:31","modified_gmt":"2022-12-12T12:42:31","slug":"apache-und-nginx-im-vergleich-wo-liegen-die-unterschiede-welcher-webserver-ist-besser","status":"publish","type":"post","link":"https:\/\/u-labs.de\/portal\/apache-und-nginx-im-vergleich-wo-liegen-die-unterschiede-welcher-webserver-ist-besser\/","title":{"rendered":"Apache und Nginx im Vergleich: Wo liegen die Unterschiede? Welcher Webserver ist besser?"},"content":{"rendered":"<p>Je nach Statistik ist <a href=\"https:\/\/hostadvice.com\/marketshare\/server\/\" title=\"Apache der verbreitetste Webserver\" target=\"_blank\" rel=\"nofollow\">Apache der verbreitetste Webserver<\/a>, oder es steht <a href=\"https:\/\/w3techs.com\/technologies\/overview\/web_server\" title=\"Nginx auf Platz 1\" target=\"_blank\" rel=\"nofollow\">Nginx auf Platz 1<\/a>. Solche Messungen sind durchaus mit Vorsicht zu genie\u00dfen: Sie erfassen oft nur einen Teil des Internets und nicht jede Seite gibt bekannt, welche Technologie sie einsetzt. Unbestritten ist dagegen, dass sowohl Apache als auch Nginx zu den verbreitetsten Webservern geh\u00f6ren und damit ein wesentlicher Bestandteil des heutigen Internets sind. Doch worin unterscheiden sie sich? Welcher davon ist besser? Nachdem ich beide \u00fcber Jahre hinweg eingesetzt habe, werden wir uns die Webserver genauer anschauen und die Fragen im Anschluss kl\u00e4ren.<\/p>\n<h2 class=\"wp-block-heading\">Apache: Das Urgestein des WWW<\/h2>\n<p>Die Entwicklung von Apache geht bis in die fr\u00fchen 1990er Jahre zur\u00fcck: Sie erweiterten den 1993 erschienenen <a href=\"https:\/\/github.com\/TooDumbForAName\/ncsa-httpd\" title=\"NCSA HTTPd\" target=\"_blank\" rel=\"nofollow\">NCSA HTTPd<\/a>. Er wurde am Nationalen Zentrum f\u00fcr Supercomputer-Anwendungen in den USA als einer der ersten Webserver entwickelt. Als einer der urspr\u00fcnglichen Entwickler das Zentrum mitte 1994 verl\u00e4sst, verlangsamt sich die Entwicklung stark. Im selben Jahr erweitern acht unabh\u00e4ngige Entwickler HTTPd und ver\u00f6ffentlichten ihre \u00c4nderungen 1995 unter dem Name <strong>Apache HTTP Server<\/strong>. Er war das Gr\u00fcndungsprojekt der 1999 gegr\u00fcndeten Apache Software-Stiftung, die bis heute eine Vielzahl an verbreiteten Open Source Projekten betreut. Sie haben f\u00fcr den Webserver ihre eigene Apache-Lizenz entwickelt.<\/p>\n<h2 class=\"wp-block-heading\">Nginx setzt den Fokus auf Leistung<\/h2>\n<p>Der Nginx-Webserver erschien dagegen erst im Jahre 2004. Er wurde f\u00fcr die russische Suchmaschine Rambler entwickelt, die bereits im Jahr 2000 mehr als eine Milliarde Suchanfragen erhielt. Wichtig war daher eine hohe Leistung bei geringem Ressourcenverbrauch. Hier schneidet er deutlich besser ab als Apache und ist zudem ebenfalls quelloffen unter der BSD-Lizenz &#8211; daher verliert Apache bereits seit einigen Jahren Marktanteile an Nginx. <a href=\"https:\/\/w3techs.com\/technologies\/cross\/web_server\/ranking\" title=\"In den Top 1.000 Seiten mit dem h\u00f6chsten Datenvolumen\" target=\"_blank\" rel=\"nofollow\">In den Top 1.000 Seiten mit dem h\u00f6chsten Datenvolumen<\/a> erreichte Nginx im Mai 2022 einen Marktanteil von \u00fcber 46%, Apache mehr als 31%.<\/p>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><a href=\"https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2022\/05\/grafik-3.png\"><img loading=\"lazy\" decoding=\"async\" width=\"541\" height=\"400\" src=\"https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2022\/05\/grafik-3.png\" alt=\"\" class=\"wp-image-8955\" srcset=\"https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2022\/05\/grafik-3.png 541w, https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2022\/05\/grafik-3-300x222.png 300w, https:\/\/u-labs.de\/portal\/wp-content\/uploads\/2022\/05\/grafik-3-70x52.png 70w\" sizes=\"auto, (max-width: 541px) 100vw, 541px\" \/><\/a><\/figure>\n<\/div>\n<h2 class=\"wp-block-heading\">Worin unterscheiden sich Nginx und Apache konkret?<\/h2>\n<h3 class=\"wp-block-heading\">Architektur<\/h3>\n<p>Apache besitzt <a href=\"https:\/\/www.ionos.de\/digitalguide\/server\/knowhow\/nginx-vs-apache-ein-webserver-vergleich\/\" title=\"eine prozessbasierte Architektur\" target=\"_blank\" rel=\"nofollow\">eine prozessbasierte Architektur<\/a>, bei dem pro Anfrage ein Kindprozess (<strong>mpm_prefork<\/strong>) oder Thread (<strong>mpm_worker<\/strong>) gestartet wird. Threads verbrauchen weniger Ressourcen, allerdings kann sich hier ein fehlerhafter Prozess auch auf andere Verbinden auswirken. Dies ist bei mpm_prefork nicht der Fall, da jede Verbindung ihren eigenen Prozess erh\u00e4lt. Um den physischen Server nicht zu \u00fcberlasten, gibt es f\u00fcr beide Module Limits. Werden mehr Threads oder Prozesse ben\u00f6tigt als zur Verf\u00fcgung stehen, m\u00fcssen Anfragen warten. <\/p>\n<p>Das wird vor allem mit Keep-Alive zum Problem: Hier werden Verbindungen bewusst \u00fcber einen l\u00e4ngeren Zeitraum offen gehalten &#8211; belegen in dieser Zeit aber einen Thread bzw. Prozess. Dies kann bei hoher Anzahl zur \u00dcberlastung des Servers f\u00fchren. Seit Apache 2.4 gibt es mit <strong>mpm_event<\/strong> eine Alternative. Es bietet eine bessere Lastverteilung und lagert Keep-Alive Verbindungen in einen eigenen Thread aus, damit neue Anfragen nicht blockiert werden.<\/p>\n<h3 class=\"wp-block-heading\">Leistung<\/h3>\n<p>Am meisten Ressourcen ben\u00f6tigt <strong>mpm_prefork<\/strong>: F\u00fcr jede Verbindung muss ein eigener Prozess gestartet und in ihm jedes Apache-Modul geladen werden. Da ein Thread im Kontext des Programms l\u00e4uft, ist dies nicht notwendig &#8211; hier reicht einmaliges laden, damit alle Threads gemeinsam darauf zugreifen k\u00f6nnen. <strong>mpm_worker<\/strong> und <strong>mpm_event<\/strong> sind daher bereits deutlich effizienter. Allerdings m\u00fcssen beide Module zwischen den Threads wechseln. Diese Kontextwechsel sind rechenintensiv, da der bestehende Kontext gesichert und der neue geladen werden muss.<\/p>\n<p>Nginx setzt auf eine eventbasierte Architektur, hat mit dem <strong>mpm_event<\/strong> Modul von Apache jedoch wenig gemeinsam: Es gibt eine Schleife (Event-Loop), die mehrere tausend Anfragen gleichzeitig annehmen und verarbeiten kann. Dies erfolgt asynchron und kann daher in einem einzigen Thread ablaufen &#8211; Kontextwechsel entfallen daher komplett. <\/p>\n<p>Vereinfacht gesagt \u00fcbergibt Nginx Aufgaben an das Betriebssystem, etwa den Inhalt einer Datei auszulesen und merkt sich dies. Statt auf das Ergebnis zu warten (was relativ lange dauert) und dadurch blockiert zu sein, werden zeitgleich andere Aufgaben erledigt, etwa die n\u00e4chste Anfrage anzunehmen. Hat das Betriebssystem die zuvor delegierte Aufgabe (hier das auslesen einer Datei) erledigt, wird dies per R\u00fcckruffunktion (Callback) an Nginx gemeldet. Da Nginx sich dies gemerkt hat, sendet es den Dateiinhalt an die entsprechende Anfrage.<\/p>\n<p>Bei Apache m\u00fcsste zun\u00e4chst ein Thread bzw. Prozess gestartet werden. Dieser w\u00e4re blockiert, bis die Datei eingelesen und an den Client gesendet wurde. Beides ist bei Nginx nicht der Fall, sodass dieser Webserver mehr Durchsatz bei geringerem Ressourcenverbrauch erzielen kann.<\/p>\n<h3 class=\"wp-block-heading\">Dynamische Inhalte<\/h3>\n<p>Heutzutage m\u00fcssen Webserver nicht nur statische Inhalte wie HTML-Seiten, CSS, Bilder etc. ausliefern. Nahezu \u00fcberall werden Inhalte dynamisch mit PHP, Python, Java und anderen Technologien dynamisch generiert. Diese k\u00f6nnen in Apache mit Modulen wie <strong>mod_php<\/strong>, <strong>mod_python <\/strong>usw. integriert werden. Dies ist bequem, allerdings m\u00fcssen diese Module in jedem Arbeitsprozess geladen werden. Auch wenn dieser nur statische Inhalte ausliefert, wird z.B. das PHP-Modul geladen. Au\u00dferdem startet Apache f\u00fcr jede Anfrage einen eigenen PHP-Prozess.<\/p>\n<p>Nginx bietet keine solche Integration und kann nativ nur statische Inhalte ausliefern. F\u00fcr dynamische Inhalte gibt es Schnittstellen wie z.B. FastCGI, um diese an einen eigenen Server auszulagern. Bei PHP w\u00e4re dies beispielsweise PHP-FPM. Der Vorteil: Durch die Auslagerung steigt die Effizienz. PHP, Python oder was man nutzen m\u00f6chte wird nur f\u00fcr die Skripte geladen. Ein Prozessmanager wie PHP-FPM bietet dar\u00fcber hinaus weitere Optimierungen. Beispielsweise kann er X PHP-Prozesse gestartet halten. Damit entf\u00e4llt der Aufwand und die Verz\u00f6gerung, f\u00fcr jede Anfrage zun\u00e4chst einen eigenen Prozess starten zu m\u00fcssen.<\/p>\n<p>Apache hat hier allerdings bereits vor einiger Zeit nachgebessert: \u00dcber das Modul <strong>mod_proxy_fcgi <\/strong>kann man seit Version 2.3 auch einen externen Anwendungsserver per FastCGI anbinden. Somit hat man heutzutage bei Apache die Wahl, ob man die eingebetteten Module oder FastCGI verwenden m\u00f6chte.<\/p>\n<h3 class=\"wp-block-heading\">Module<\/h3>\n<p>Sowohl Apache als auch Nginx lassen sich \u00fcber verschiedene Module erweitern. Im Umgang damit gibt es aber einen gro\u00dfen Unterschied: Apache erlaubt es, Module jederzeit einfach zu installieren, zu aktivieren oder zu deaktivieren. Beispielsweise kann man ein Modul nur f\u00fcr eine bestimmte Seite laden. Bei Nginx m\u00fcssen Module dagegen einkompiliert werden. Wer ein Modul verwenden m\u00f6chte, dass nicht im Standard enthalten ist (z.B. Brotli), muss Nginx zusammen mit diesem kompilieren. <a href=\"https:\/\/u-labs.de\/portal\/c-webserver-selbst-kompilieren-aktuellster-nginx-auf-dem-raspberry-pi\/\" title=\"C Webserver selbst kompilieren: Aktuellster Nginx auf dem Raspberry Pi\">Wie das funktioniert, habe ich in einem eigenen Beitrag bereits erkl\u00e4rt<\/a>. Das feste einkompilieren hat bei Nginx allerdings Performance-Vorteile gegen\u00fcber des dynamischen Ladens bei Apache.<\/p>\n<p>Der Nachteil: Man erh\u00e4lt keine zentralen Aktualisierungen mehr \u00fcber die Paketverwaltung oder Docker-Images. Bei jeder \u00c4nderung muss man sich den Quellcode herunterladen und Nginx neu kompilieren. Dynamische Module gibt es nur in Nginx Plus. Diese Version ist kostenpflichtig, enth\u00e4lt Support und einige Sonderfunktionen. Es lassen sich allerdings auch mit Nginx Plus nicht alle Module dynamisch laden.<\/p>\n<h3 class=\"wp-block-heading\">Konfiguration<\/h3>\n<p>Beide Webserver besitzen eine zentrale Konfigurationsdatei <strong>httpd.conf<\/strong> (Apache) bzw <strong>nginx.conf <\/strong>f\u00fcr Nginx. Apache bietet zus\u00e4tzlich die M\u00f6glichkeit, in jedem Verzeichnis einer Webseite (<strong>DocumentRoot<\/strong>) eine <strong>.htaccess<\/strong> Datei zu platzieren. Mit ihr kann man die zentrale Konfiguration erg\u00e4nzen, jeweils f\u00fcr das aktuelle Verzeichnis und ggf. auch die Unterverzeichnisse.<\/p>\n<p>Das kann praktisch sein, wenn sich mehrere Personen einen Server teilen. So kann jeder eigenst\u00e4ndig seine Seite konfigurieren, ohne dass der Administrator jede \u00c4nderung an der zentralen <strong>httpd.conf <\/strong>vornehmen muss. Allerdings ist dieser dezentrale Ansatz schlecht f\u00fcr die Leistung: Bei jeder Anfrage durchsucht Apache das Dateisystem nach m\u00f6glicherweise vorhandenen <strong>.htaccess<\/strong> Dateien. Das verursacht zus\u00e4tzliche Last und verz\u00f6gert die Auslieferung. Au\u00dferdem kann dies ein m\u00f6gliches Sicherheitsrisiko sein, weswegen empfohlen wird, dies mit <strong>AllowOverride None<\/strong> zu deaktivieren, sofern man die Funktionalit\u00e4t nicht zwingend ben\u00f6tigt.<\/p>\n<h3 class=\"wp-block-heading\">Unterst\u00fctzung<\/h3>\n<p>Nginx und Apache liefern eine solide Dokumentation, die allerdings bei Nginx nur in Englisch und Russisch verf\u00fcgbar ist. Apache liefert eine deutsche Dokumentation &#8211; vor allem f\u00fcr Neulinge kann dies sicher eine Hilfe sein. Allerdings ist die deutsche Variante teilweise nicht immer aktuell, sodass die englische Fassung tendenziell zu bevorzugen ist. Vereinzelt finde ich die Inhalte bei Nginx etwas knapp.<\/p>\n<p>Im Falle von Fragen oder Problemen existiert f\u00fcr beide Webserver eine gro\u00dfe Nutzergemeinde. Man findet zahlreiche Artikel, Forenbeitr\u00e4ge und andere Quellen, die verschiedene Szenarien beschreiben und wo man bei Bedarf auch selbst um Hilfe bitten kann.<\/p>\n<h3 class=\"wp-block-heading\">Kompatibilit\u00e4t und \u00d6kosystem<\/h3>\n<p>Die breiteste Kompatibilit\u00e4t findet man bei Apache: Der Webserver existiert seit etwa drei Jahrzehnten und hat sich bereits vor langem zum Quasi-Standard entwickelt. Vor allem auf gemeinsam genutzten Webspace-Paketen wird er oft eingesetzt. Viele Webanwendungen sind daher mit Apache kompatibel. Die Funktionen k\u00f6nnen \u00fcber zahlreiche Erweiterungen erg\u00e4nzt werden. Damit lassen sich nicht nur alle g\u00e4ngigen Standards umsetzen, sondern bei Bedarf auch kreativere Workarounds. <a href=\"https:\/\/httpd.apache.org\/docs\/2.4\/mod\/mod_substitute.html\" title=\"So erlaubt das Modul mod_substitute\" target=\"_blank\" rel=\"nofollow\">So erlaubt das Modul mod_substitute<\/a> etwa bestimmte Muster zu ersetzen, bevor Apache diese ausliefert.<\/p>\n<p>Vor einigen Jahren genoss Nginx bei diesen Aspekten eher ein Nischendasein, wird aber auch zunehmend unterst\u00fctzt. Die Anzahl der Module hat ebenfalls zugenommen. F\u00fcr alle Erweiterungen die nicht zum Kern geh\u00f6ren, muss allerdings der gesamte Webserver neu kompiliert werden.<\/p>\n<h2 class=\"wp-block-heading\">Alternative: Apache und Nginx einsetzen<\/h2>\n<p>Man kann auch beide Webserver gemeinsam einsetzen. G\u00e4ngig ist beispielsweise, statische Inhalte von Nginx auszuliefern und nur (bestimmte) dynamische Anfragen an Apache weiterzuleiten. So lassen sich die Vor- und Nachteile beider Programme erheblich ausgleichen: Nginx liefert effizient statische Dateien aus, w\u00e4hrend Apache mit seiner vollen Flexibilit\u00e4t f\u00fcr den Rest zur Verf\u00fcgung steht. Nginx lauscht daf\u00fcr auf den Standartports 80\/443, w\u00e4hrend Apache einen anderen (ausschlie\u00dflich intern genutzten) Port erh\u00e4lt, etwa 81.<\/p>\n<p>Dies ist beispielsweise dann sinnvoll, wenn man f\u00fcr eine recht stark besuchte Seite spezielle Funktionen von Apache ben\u00f6tigt, aber Leistung und Ressourcenverbrauch optimieren m\u00f6chte. In den meisten F\u00e4llen reicht aber ein Webserver.<\/p>\n<h2 class=\"wp-block-heading\">Fazit und Entscheidungshilfe: Nginx oder Apache?<\/h2>\n<p>Nginx ist auf Leistung und Effizient optimiert &#8211; Apache dagegen eher auf Einfachheit, Flexibilit\u00e4t und breite Kompatibilit\u00e4t. So k\u00f6nnte man die Unterschiede grob in einem Satz zusammenfassen. Es ist daher schwer, pauschal einen als besser oder schlechter zu beurteilen. F\u00fcr welchen Webserver sollte man sich nun entscheiden? Ich w\u00fcrde folgende Kriterien zu Hilfe nehmen:<\/p>\n<ul class=\"wp-block-list\">\n<li>Apache eignet sich gut f\u00fcr Einsteiger, da man vergleichsweise einfach die eingebetteten Interpreter f\u00fcr z.B. PHP, Python &amp; co. nutzen kann und sich viele Module per APT-Pakete nachinstallieren lassen<\/li>\n<li>Vor allem bei kleinen und teils auch mittelgro\u00dfen Seiten sind die Performance-Unterschiede oft vernachl\u00e4ssigbar, selbst auf einem Raspberry Pi (so lange es nicht gerade ein schwaches Modell mit einer sehr komplexen Webanwendung ist)<\/li>\n<li>Wenn die ben\u00f6tigten Funktionen \u00fcberschaubar sind, kann man Nginx einsetzen &#8211; vor allem als Reverse Proxy reicht dieser oft v\u00f6llig aus. Wobei gerade <a href=\"https:\/\/u-labs.de\/portal\/traefik-auf-server-raspberry-pi-installieren-und-einrichten-reverse-proxy-fuer-docker-mit-lets-encrypt-https-zertifikaten\/\" title=\"Traefik auf Server\/Raspberry Pi installieren und einrichten: Reverse Proxy f\u00fcr Docker mit Let\u2019s Encrypt HTTPS-Zertifikaten\">im Docker-Umfeld auch Traefik eine gute Figur macht und zudem weitere Vorteile bietet<\/a>.<\/li>\n<li>Wer bereits grundlegende Erfahrung hat, kann mithilfe von Nginx das letzte aus seiner Infrastruktur herauskitzeln &#8211; die etwas komplexeren Konfiguration d\u00fcrfte mit entsprechendem Vorwissen keine zu gro\u00dfe H\u00fcrde sein.<\/li>\n<li>Man sollte sich im Einzelfall auch immer nach der eingesetzten Software richten. Unterst\u00fctzt diese z.B. nur Apache, setzt man andere Webserver wie Nginx auf eigenes Risiko ein. Die Konfiguration kann Mehraufwand bedeuten und m\u00f6glicherweise treten Probleme auf, die man im Zweifel zudem selbst l\u00f6sen muss.<\/li>\n<li>Gerade bei schw\u00e4cherer Hardware (z.B. \u00e4ltere Raspberry Pis oder Zero) machen leichtgewichtigere Webserver Sinn, da der Unterschied unter diesen Umst\u00e4nden deutlich sp\u00fcrbar sein kann. Hier bieten sich ggf. sogar noch leichtgewichtigere Projekte an. Bei solchen Alternativen sollte man die Funktionen jedoch genau pr\u00fcfen, da diese oft eher spezifisch statt flexibel sind und daher ggf. Standardfunktionen vollwertiger Webserver fehlen k\u00f6nnen.<\/li>\n<\/ul>\n<p>Schlussendlich sollte man sich aber auch nicht vergessen: Die Unterschiede liegen im Detail. Viele vor allem Grundlegende Szenarien lassen sich mit Apache, Nginx eben so abbilden wie mit anderen weniger verbreiteten Webservern ebenfalls. Und die Entscheidung ist nicht in Stein gemei\u00dfelt. Wer Nginx ausprobiert und merkt, dass er damit nicht gut zurecht kommt, kann in den meisten F\u00e4llen jederzeit zu Apache wechseln und umgekehrt.<\/p>\n<p>Die gr\u00f6\u00dften Unterschiede zeigen sich bei stark frequentierten Seiten. Hier kann man mit Nginx die Leistung verbessern und zeitgleich sogar durch schw\u00e4chere Server Kosten sparen. Bei einer privaten Nextcloud oder anderen Software mit 5 Benutzern ist der Mehrwert von Nginx in dieser Hinsicht eher \u00fcberschaubar.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Je nach Statistik ist Apache der verbreitetste Webserver, oder es steht Nginx auf Platz 1. Solche Messungen sind durchaus mit Vorsicht zu genie\u00dfen: Sie erfassen oft nur einen Teil des Internets und nicht jede Seite gibt bekannt, welche Technologie sie einsetzt. Unbestritten ist dagegen, dass sowohl Apache als auch Nginx zu den verbreitetsten Webservern geh\u00f6ren &#8230;<\/p>\n","protected":false},"author":5,"featured_media":8962,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[62],"tags":[718,799,541],"class_list":["post-8941","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-server","tag-apache","tag-apache2","tag-nginx"],"_links":{"self":[{"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/posts\/8941","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/comments?post=8941"}],"version-history":[{"count":7,"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/posts\/8941\/revisions"}],"predecessor-version":[{"id":9745,"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/posts\/8941\/revisions\/9745"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/media\/8962"}],"wp:attachment":[{"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/media?parent=8941"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/categories?post=8941"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/tags?post=8941"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}