{"id":3087,"date":"2011-09-22T17:00:55","date_gmt":"2011-09-22T15:00:55","guid":{"rendered":"https:\/\/nodch.de\/?p=3087"},"modified":"2011-09-22T17:18:41","modified_gmt":"2011-09-22T15:18:41","slug":"nginx-konfigurieren-und-php-als-fastcgi-bereitstellen","status":"publish","type":"post","link":"https:\/\/nodch.de\/?p=3087","title":{"rendered":"Nginx konfigurieren und PHP als FastCGI bereitstellen"},"content":{"rendered":"<p>Teil 3 unserer kleinen HowTo-Reihe. Wir zeigen euch, wie man eine WordPress Webseite mit Nginx auf Ubuntu Server beschleunigen kann. Nachdem wir Nginx bereits installiert haben und PHP und MySQL, wird nun erkl\u00e4rt, wie man ein reibungsloses Zusammenspiel konfiguriert. [sws_divider_top]Bevor ich nun erkl\u00e4re wie man PHP in Nginx einbindet, m\u00fcssen wir ersteinmal wissen, wie die Nginx Konfiguration funktioniert. Die Konfiguration hat eine feste, logische Struktur:<\/p>\n<pre><span style=\"color: #ff6600\"># Hier werden nur Einstellungen vorgenommen die ganz global sind # wie z.b. der User, womit nginx ausgef\u00fchrt werden soll<\/span>\r\n<span style=\"color: #000080\">befehl<\/span>;\r\n<span style=\"color: #000080\">befehl<\/span>;\r\n\r\n<strong>events<\/strong> {\r\n  <span style=\"color: #ff6600\"># hier kann einstellt werden wie nginx mit Verbindungen umgeht<\/span>\r\n  <span style=\"color: #000080\">befehl<\/span>;\r\n}\r\n\r\n<strong>http<\/strong> {\r\n  <span style=\"color: #ff6600\"># Einstellungen f\u00fcr den http Server<\/span>\r\n  <span style=\"color: #000080\">befehl<\/span>;\r\n  <span style=\"color: #000080\">befehl<\/span>;\r\n  <span style=\"color: #000080\">include<\/span> conf\/mime.types; <span style=\"color: #ff6600\"># Einstellungen aus anderer Datei dazuholen<\/span> \r\n\r\n  <strong>server<\/strong> {\r\n    <span style=\"color: #ff6600\"># Einstellungen f\u00fcr einen Host<\/span>\r\n    <span style=\"color: #000080\">listen<\/span> nodch.de;<span style=\"color: #ff6600\"> # dieser Serverbereich gilt f\u00fcr die domain nodch.de<\/span>\r\n    <span style=\"color: #000080\">befehl<\/span>;\r\n    <span style=\"color: #000080\">befehl<\/span>;\r\n\r\n    <strong>location<\/strong> <span style=\"color: #ff0000\">\/<\/span> {\r\n      <span style=\"color: #ff6600\"># Einstellungen f\u00fcr das Root Verzeichnis <\/span>\r\n     <span style=\"color: #000080\"> befehl<\/span>;\r\n    }\r\n\r\n    <strong>location<\/strong> <span style=\"color: #ff0000\">\/download\/<\/span> {\r\n      <span style=\"color: #ff6600\"># Einstellungen f\u00fcr \/downloads<\/span>\r\n      <span style=\"color: #000080\">befehl<\/span>;\r\n    }\r\n\r\n    <strong>location<\/strong> ~* <span style=\"color: #ff0000\">^.+\\.(jpg|jpeg|gif)$<\/span> {\r\n      <span style=\"color: #ff6600\"># Einstellungen f\u00fcr alle URLs die auf .jpg, .jpeg oder .gif enden<\/span>\r\n      <span style=\"color: #000080\">befehl<\/span>;\r\n    }\r\n  }\r\n}<\/pre>\n<p>Der <strong>server<\/strong> und der <strong>location<\/strong>\u00a0Bereich kann beliebig oft vorkommen, solange er an der richtigen Sstelle ist. Einige Befehle k\u00f6nnen nur in definierten Bereichen stehen. Ich werde euch hier die wichtigsten Funktionen f\u00fcr jeden Bereich erkl\u00e4ren.<\/p>\n<h3>Globale Einstellungen<\/h3>\n<pre><span style=\"color: #000080\">user<\/span> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 www www; \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 <span style=\"color: #ff6600\"># nginx wird als User www in der Gruppe www ausgef\u00fchrt<\/span>\u00a0\r\n<span style=\"color: #000080\">worker_processes<\/span> 2; \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 <span style=\"color: #ff6600\"># nginx wird 2 Verarbeiter Prozesse starten<\/span>\r\n<span style=\"color: #000080\">pid<\/span> \u00a0\u00a0 \u00a0 \u00a0 \u00a0 \u00a0\u00a0  \/var\/run\/nginx.pid;  <span style=\"color: #ff6600\"># pid file wird dort gespeichert<\/span><\/pre>\n<p>Au\u00dferdem kann noch der <span style=\"color: #000080\">error_log<\/span> definiert werden, jedoch separiere ich diese immer in die einzelnen Server. \u00a0Wird sie oben angegeben, sieht man im log auch globale Fehler. Eine komplette Auflistung aller globalen Einstellungen findet man im <a href=\"http:\/\/wiki.nginx.org\/NginxHttpMainModule\">Nginx Wiki#NginxHttpMainModule<\/a>. Mit <span style=\"color: #000080\">worker_processes<\/span> und dem <strong>event<\/strong> Bereich k\u00f6nnt ihr die Performance des Servers beeinflussen. Der <strong>event<\/strong>\u00a0Bereich l\u00e4sst verschiedene Einstellungen zu, der Wichtigste ist aber:<\/p>\n<pre><span style=\"color: #000080\">worker_connections<\/span> 1024;<\/pre>\n<p>Wenn ihr <span style=\"color: #000080\">worker_proesses<\/span> * <span style=\"color: #000080\">worker_connections<\/span>\u00a0rechnet, erhaltet ihr die maximale Anzahl gleichzeitiger Clients, im Beispiel also maximal 2048. Auch hier findet ihr wieder alle m\u00f6glichen Einstellungen im <a href=\"http:\/\/wiki.nginx.org\/NginxHttpEventsModule\">Nginx Wiki#NginxHttpEventsModule<\/a>.<\/p>\n<p>Die richtige Wahl der <span style=\"color: #000080\">worker_processes<\/span> ist wichtig! Wollt ihr eine Webseite haben, die sehr Last intensiv ist, also mit SSL und GZIP, so sollte die Zahl der Worker Prozesse nicht die Anzahl der CPU Cores \u00fcbersteigen. Verwendet ihr den Server aber als Host f\u00fcr statischen Content, kann die Zahl erh\u00f6ht werden, um einen schnellstm\u00f6glichen Dateizugriff zu haben.<\/p>\n<h3>HTTP Server Einstellungen<\/h3>\n<p>Alle hier get\u00e4tigten Einstellungen wirken sich direkt auf die eingetragenen <strong>server<\/strong> Bereiche aus. Im <strong>http<\/strong>\u00a0Bereich werden in der Regel Einstellungen gemacht, die f\u00fcr alle <strong>server<\/strong>\u00a0Bereiche gleich sind, wie beispielsweise das access log format, oder gzip. Diese Befehle k\u00f6nnen problemlos im <strong>server<\/strong>\u00a0Bereich \u00fcberschieben werden. Hier seht ihr wie der http Bereich bei nodch.de aussieht:<\/p>\n<pre><span style=\"color: #000080\">include<\/span> <span style=\"color: #ff0000\">\/etc\/nginx\/mime.types<\/span>;\r\n\r\n<span style=\"color: #000080\">log_not_found<\/span> off; <span style=\"color: #ff6600\"># kein Status 404 logen<\/span>\r\n                   <span style=\"color: #ff6600\"># Log format soll Apache \u00e4hnlich sein<\/span>\r\n<span style=\"color: #000080\">log_format<\/span> main\t<span style=\"color: #ff0000\">'$remote_addr - $remote_user [$time_local] \"$request\"'<\/span>\r\n<span style=\"color: #ff0000\"> ' $status $body_bytes_sent \"$http_referer\" \"$http_user_agent\"'<\/span>;\r\n\r\n<span style=\"color: #000080\">sendfile<\/span>           on;  <span style=\"color: #ff6600\"># Erlaubt sendfile(). Infos <a href=\"http:\/\/wiki.nginx.org\/NginxHttpCoreModule#sendfile\">hier<\/a><\/span>\r\n<span style=\"color: #000080\">tcp_nodelay<\/span>        on;  <span style=\"color: #ff6600\"># F\u00fcr sendfile()<\/span>\r\n<span style=\"color: #000080\">keepalive_timeout<\/span>  6;  <span style=\"color: #ff6600\"> # Verbindungen fr\u00fch wieder schlie\u00dfen<\/span>\r\n<span style=\"color: #000080\">server_tokens<\/span>      off; <span style=\"color: #ff6600\"># Versionsnummer nicht auf der Fehlerseite zeigen<\/span>\r\n\r\n<span style=\"color: #000080\">gzip<\/span>               on;    <span style=\"color: #ff6600\"># GZip Anschalten<\/span>\r\n<span style=\"color: #000080\">gzip_http_version<\/span>  1.0;\r\n<span style=\"color: #000080\">gzip_comp_level<\/span>    2;     <span style=\"color: #ff6600\"># Kompressionslevel. Performancesache<\/span>\r\n<span style=\"color: #000080\">gzip_proxied<\/span>       any;   <span style=\"color: #ff6600\"># Proxy Verhalten<\/span>\r\n<span style=\"color: #000080\">gzip_min_length<\/span>\t   1100;  <span style=\"color: #ff6600\"># erst ab 1100 byte gr\u00f6\u00dfe kompremieren<\/span>\r\n<span style=\"color: #000080\">gzip_buffers<\/span>       16 8k;\r\n<span style=\"color: #ff6600\"># Folgende Dateitypen kompremieren<\/span>\r\n<span style=\"color: #000080\">gzip_types<\/span>         text\/plain text\/html text\/css application\/x-javascript\r\n                   application\/xml application\/xml+rss text\/javascript;\r\n<span style=\"color: #000080\">gzip_disable<\/span>       <span style=\"color: #ff0000\">\"MSIE [1-6].(?!.*SV1)\"<\/span>; <span style=\"color: #ff6600\"># GZip f\u00fcr den IE6 auschalten<\/span>\r\n<span style=\"color: #000080\">gzip_vary<\/span>          on;  <span style=\"color: #ff6600\"># Vary Header senden<\/span>\r\n\r\n<span style=\"color: #ff6600\"># server und zusatzconfigs einbinden<\/span>\r\n<span style=\"color: #000080\">include<\/span> <span style=\"color: #ff0000\">\/etc\/nginx\/conf.d\/*.conf<\/span>;\r\n<span style=\"color: #000080\">include<\/span> <span style=\"color: #ff0000\">\/etc\/nginx\/sites-enabled\/*<\/span>;<\/pre>\n<p>Dies ist eine vergleichsweise simple Konfiguration, wir definieren, das wir immer GZip benutzen wollen, jedoch nicht f\u00fcr den IE6. Au\u00dferdem setzen wir das <span style=\"color: #000080\">keepalive_timeout<\/span> stark runter, um erh\u00f6htes Trafficaufkommen problemlos zu verarbeiten. Au\u00dferdem \u00e4ndern wir das Log Format in das von Apache, um Analyse Tools zu benutzen. Eine Auflistung aller Core Befehle gibt es auch wieder im <a href=\"http:\/\/wiki.nginx.org\/NginxHttpCoreModule\">Nginx Wiki#NginxHttpCoreModule<\/a> sowie eine \u00dcbersicht \u00fcber alle anderen <a href=\"http:\/\/wiki.nginx.org\/Modules#Standard_HTTP_modules\">Module<\/a>. Viel wichtiger als der <strong>http<\/strong> Bereich, ist f\u00fcr uns aber der <strong>server<\/strong>\u00a0Bereich.<\/p>\n<p>Der <strong>server<\/strong>\u00a0Bereich ist \u00e4hnlich dem VirtualHost Eintrag im Apache. Hier ein Beispiel:<\/p>\n<pre><strong>server<\/strong> {\r\n  <span style=\"color: #000080\">server_name<\/span>  nodch.de; <span style=\"color: #ff6600\"># Dieser Bereich ist nur f\u00fcr die Domain nodch.de <\/span>  <span style=\"color: #ff6600\"># nodch.de wird auf www.nodch.de umgeschrieben<\/span>\r\n  <span style=\"color: #000080\">rewrite<\/span> <span style=\"color: #ff0000\">^(.*)<\/span>\thttps:\/\/nodch.de$1 permanent;\r\n}\r\n\r\n<strong>server<\/strong> {\r\n  <span style=\"color: #000080\">listen<\/span>        80; <span style=\"color: #ff6600\"># Port 80 benutzen <\/span>  <span style=\"color: #ff6600\"># Dieser Bereich gilt f\u00fcr diese beiden Domains<\/span>\r\n  <span style=\"color: #000080\">server_name<\/span>   www.nodch.de photo.nodch.de; \r\n\r\n  <span style=\"color: #000080\">root<\/span>          <span style=\"color: #ff0000\">\/var\/www\/nodch.de\/httpdocs<\/span>; <span style=\"color: #ff6600\"># Hier liegen die Dateien<\/span>\r\n  <span style=\"color: #ff6600\"># Log hier schreiben und dabei das \"main\"-Format benutzen<\/span>\r\n  <span style=\"color: #000080\">access_log<\/span>    <span style=\"color: #ff0000\">\/var\/www\/nodch.de\/logs\/access.log<\/span>  main;\r\n  <span style=\"color: #ff6600\"># Die Fehler landen in dieser Datei<\/span>\r\n  <span style=\"color: #000080\">error_log<\/span>     <span style=\"color: #ff0000\">\/var\/www\/nodch.de\/logs\/error.log<\/span>;\r\n\r\n  <span style=\"color: #ff6600\"># die index Datei ist index.php wenn nicht da index.html ... usw.<\/span>\r\n  <span style=\"color: #000080\">index<\/span>         index.php index.html index.htm;\r\n}<\/pre>\n<p>Wenn nun eine [sws_highlight hlcolor=&#8220;fbfac7&#8243;]index.html[\/sws_highlight] Datei in [sws_highlight hlcolor=&#8220;fbfac7&#8243;]\/var\/www\/nodch.de\/httpdocs[\/sws_highlight]\u00a0\u00a0liegt und euer Server ist gestartet, dann k\u00f6nnt ihr mit eurem Webbrowser darauf zugreifen und ihr werdet den Inhalt der index.html dargestellt bekommen. Nur wird es ohne weiteres nicht klappen nodch.de aufzurufen und eure Datei zu sehen \ud83d\ude42 Ihr m\u00fcsst es entweder auf localhost \u00e4ndern oder eure eigene Domain eintragen. Aber insoweit ist Nginx konfiguriert um statischen Content zu hosten, welcher brav komprimiert wird. Im <strong>server<\/strong> Bereich k\u00f6nnt ihr eigene <strong>location<\/strong> Bereiche anlegen, in denen Befehle hinterlegt werden k\u00f6nnen, die eben nur an dieser <strong>location<\/strong> g\u00fcltig sind. Hierzu ein Beispiel:<\/p>\n<pre><span style=\"color: #ff6600\"># Gilt f\u00fcr die Hauptseite<\/span>\r\n<strong>location<\/strong> <span style=\"color: #ff0000\">\/<\/span> {\r\n  <span style=\"color: #ff6600\"># URLs probieren ob es sie gibt, letzter Eintrag ist immer Default<\/span>\r\n  <span style=\"color: #000080\">try_files<\/span> $uri $uri\/ \/index.php;\r\n}\r\n<span style=\"color: #ff6600\"> # Die Datei piwik.js, egal wo sie liegt bekommt eine Cachezeit von 90 Tagen.<\/span>\r\n<strong>location<\/strong> ~ <span style=\"color: #ff0000\">piwik.js$<\/span> {\r\n  <span style=\"color: #000080\">expires<\/span> 90d;\r\n}\r\n\r\n<span style=\"color: #ff6600\"># Das favicon interessiert uns nicht. Log aus.<\/span>\r\n<strong>location<\/strong> = <span style=\"color: #ff0000\">\/favicon.ico<\/span> {\r\n  <span style=\"color: #000080\">access_log<\/span> off;\r\n}\r\n\r\n<span style=\"color: #ff6600\"># Adressen die mit wp-content, js oder css anfangen<\/span>\r\n<strong>location<\/strong> ~ <span style=\"color: #ff0000\">^\/(wp-content|js|css)\/<\/span>  {\r\n  <span style=\"color: #000080\">expires<\/span> 30d; <span style=\"color: #ff6600\"># Cachzeit 30 Tage<\/span>\r\n  <span style=\"color: #000080\">root<\/span>    <span style=\"color: #ff0000\">\/var\/www\/nodch.de\/static<\/span>; <span style=\"color: #ff6600\"># Dateien aus anderen Ordner beziehen<\/span>\r\n}<\/pre>\n<p>Der <strong>location<\/strong> Bereich kann ziemlich frei, mithilfe von Regex bestimmt werden. Mithilfe von Steuerzeichen kann au\u00dferdem bestimmt werden, wie wichtig ein <strong>location<\/strong> Bereich ist.<\/p>\n<ul>\n<li>=\u00a0 \u00a0Bedeutet, dass diese <strong>location<\/strong> fest ist, kein Regex<\/li>\n<li>~ \u00a0 Regex ist case sensitiv<\/li>\n<li>*~ Regex ist case insensitiv<\/li>\n<li>^~ Sucht ein Regex, h\u00f6rt an dieser <strong>location<\/strong> auf wenn gefunden<\/li>\n<\/ul>\n<p>Genauere Infos erhaltet ihr nat\u00fcrlich wieder im <a href=\"http:\/\/wiki.nginx.org\/NginxHttpCoreModule#location\">Nginx Wiki#location<\/a>, auch sind die default Konfigurationen gut kommentiert, sodass man damit auch gleich loslegen kann.[sws_divider_top]<\/p>\n<h3>PHP einbinden<\/h3>\n<p>Mit dem vorherigen Artikel habt ihr schon PHP installiert und als FastCGI Anwendung auf 127.0.0.1:9000 gespawnt. Um diese nun mit nginx anzusteuern, m\u00fcssen zwei kleine Modifikationen vorgenommen werden. \u00d6ffnet zuerst die Datei [sws_highlight hlcolor=&#8220;fbfac7&#8243;]\/etc\/nginx\/fastcgi_params[\/sws_highlight] . Der Inhalt sollte so aussehen:<\/p>\n<pre><span style=\"color: #000080\">fastcgi_param<\/span>\tQUERY_STRING\t\t$query_string;\r\n<span style=\"color: #000080\">fastcgi_param<\/span>\tREQUEST_METHOD\t\t$request_method;\r\n<span style=\"color: #000080\">fastcgi_param<\/span>\tCONTENT_TYPE\t\t$content_type;\r\n<span style=\"color: #000080\">fastcgi_param<\/span>\tCONTENT_LENGTH\t\t$content_length;\r\n\r\n<span style=\"color: #000080\">fastcgi_param<\/span>\tSCRIPT_FILENAME\t\t<strong><span style=\"color: #ff0000\">$document_root<\/span>$fastcgi_script_name<\/strong>;\r\n<span style=\"color: #000080\">fastcgi_param<\/span>\tSCRIPT_NAME\t\t$fastcgi_script_name;\r\n<span style=\"color: #000080\">fastcgi_param<\/span>\tREQUEST_URI\t\t$request_uri;\r\n<span style=\"color: #000080\">fastcgi_param<\/span>\tDOCUMENT_URI\t\t$document_uri;\r\n<span style=\"color: #000080\">fastcgi_param<\/span>\tDOCUMENT_ROOT\t\t$document_root;\r\n<span style=\"color: #000080\">fastcgi_param<\/span>\tSERVER_PROTOCOL\t\t$server_protocol;\r\n\r\n<span style=\"color: #000080\">fastcgi_param<\/span>\tGATEWAY_INTERFACE\tCGI\/1.1;\r\n<span style=\"color: #000080\">fastcgi_param<\/span>\tSERVER_SOFTWARE\t\tnginx\/$nginx_version;\r\n\r\n<span style=\"color: #000080\">fastcgi_param<\/span>\tREMOTE_ADDR\t\t$remote_addr;\r\n<span style=\"color: #000080\">fastcgi_param<\/span>\tREMOTE_PORT\t\t$remote_port;\r\n<span style=\"color: #000080\">fastcgi_param<\/span>\tSERVER_ADDR\t\t$server_addr;\r\n<span style=\"color: #000080\">fastcgi_param<\/span>\tSERVER_PORT\t\t$server_port;\r\n<span style=\"color: #000080\">fastcgi_param<\/span>\tSERVER_NAME\t\t$server_name;<\/pre>\n<p>Es ist wichtig, dass<strong> in\u00a0SCRIPT_FILENAME der absolute Pfad verwendet wird<\/strong>, denn dieser wird an die PHP Worker gegeben. W\u00fcrde ein vermeindlich relativer Dateipfad \u00fcbergeben werden, wie z.B. [sws_highlight hlcolor=&#8220;fbfac7&#8243;]\/wordpress\/index.php[\/sws_highlight], werdet ihr die Fehlermeldung <span style=\"color: #000000\"><strong>No input file specified<\/strong><\/span> bekommen. Er muss also absolut sein: [sws_highlight hlcolor=&#8220;fbfac7&#8243;]\/var\/www\/prad\/zu\/index.php[\/sws_highlight].<\/p>\n<p>Ist diese Anpassung gemacht, \u00f6ffnet bitte die Datei, in der ein <strong>server<\/strong> Bereich vorhanden ist. F\u00fcgt eine neue <strong>location<\/strong> hinzu:<\/p>\n<pre><strong>location<\/strong> ~ <span style=\"color: #ff0000\">\\.php$<\/span> {\r\n  <span style=\"color: #000080\">include<\/span>                  fastcgi_params; <span style=\"color: #ff6600\"># Parameter einbinden<\/span>\r\n  <span style=\"color: #000080\">fastcgi_pass<\/span>             127.0.0.1:9000; <span style=\"color: #ff6600\"># Anfrage an Worker weitergeben<\/span>\r\n  <span style=\"color: #000080\">fastcgi_index<\/span>\t           index.php; <span style=\"color: #ff6600\"># Standard Dateiname<\/span>\r\n  <span style=\"color: #000080\">fastcgi_split_path_info<\/span>  <span style=\"color: #ff0000\">^(.+\\.php)(\/.+)$<\/span>; <span style=\"color: #ff6600\"># Parameter abtrennen<\/span>\r\n  <span style=\"color: #000080\">fastcgi_intercept_errors<\/span> on; <span style=\"color: #ff6600\"># Fehler ausgeben<\/span>\r\n}<\/pre>\n<p>Diese <strong>location<\/strong> bezieht sich auf alle PHP Dateien und reicht die Verarbeitung an unsere PHP Worker weiter. Die Parameter werden von der URL abgetrennt, was bewirkt, das auch URL Parameter an PHP gegeben werden und normal benutzt werden k\u00f6nnen. Alternativ zu 127.0.0.1:900 kann auch ein<strong> Unix-Socket<\/strong> verwendet werden. Dazu im Startscript einfach nicht die Adresse 127.0.0.1:9000 sondern eine Datei wie [sws_highlight hlcolor=&#8220;fbfac7&#8243;]\/var\/socket\/php.socket[\/sws_highlight]\u00a0 binden. Danach muss der Parameter <span style=\"color: #000080\">fastcgi_pass<\/span> angepasst werden:<\/p>\n<pre><span style=\"color: #000080\">fastcgi_pass<\/span> unix:<span style=\"color: #ff0000\">\/var\/socket\/php.socket<\/span>;<\/pre>\n<p>Das wars auch schon. Ihr k\u00f6nnt jetzt folgendes testen:<\/p>\n<pre>$ echo \"&lt;?php phpinfo(); ?&gt;\" &gt; \/var\/www\/eure\/httpdocs\/info.php<\/pre>\n<p>Dann einfach die info.php im Browser aufrufen und ihr werdet die PHP Konfigurationswebseite sehen!<\/p>\n<p><strong>Viel Spa\u00df beim testen<\/strong>! Im n\u00e4chsten Teil dieser Serie werde ich euch dann zeigen, wie ihr WordPress auf einer Nginx Umgebung benutzt und es mit Hilfe von W3TotalCache, sowie anderen Optimierungsmethoden sp\u00fcrbar schneller machen k\u00f6nnt.<\/p>\n<p>[sws_divider_top] <a title=\"WordPress Webseite mit Nginx auf Ubuntu Server beschleunigen\" href=\"https:\/\/nodch.de\/wordpress-webseite-mit-nginx-auf-ubuntu-server-beschleunigen\/3014\/\">Teil 0: Einf\u00fchrung<\/a><br \/>\n<a title=\"HowTo: Installation der aktuellen Nginx-Version auf Ubuntu\" href=\"https:\/\/nodch.de\/howto-installation-der-aktuellen-nginx-version-auf-ubuntu\/3029\/\"> Teil I: Installation der aktuellen Nginx-Version auf Ubuntu<\/a><br \/>\n<a title=\"HowTo: Installation von MySQL und PHP auf Ubuntu Server\" href=\"https:\/\/nodch.de\/howto-installation-von-mysql-und-php-auf-ubuntu-server\/3030\/\"> Teil II: Installation von MySQL und PHP<\/a><br \/>\n<em><a title=\"Nginx konfigurieren und PHP als FastCGI bereitstellen\" href=\"https:\/\/nodch.de\/nginx-konfigurieren-und-php-als-fastcgi-bereitstellen\/3087\/\">Teil III: Nginx konfigurieren und PHP als FastCGI bereitstellen<\/a><\/em><br \/>\n&#8211; Alternativ: PHP-FPM Installieren und bereitstellen (folgt !)<br \/>\nTeil IV: Nginx f\u00fcr WordPress optimieren<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Teil 3 unserer kleinen HowTo-Reihe. Wir zeigen euch, wie man eine WordPress Webseite mit Nginx auf Ubuntu Server beschleunigen kann. Nachdem wir Nginx bereits installiert haben und PHP und MySQL, wird nun erkl\u00e4rt, wie man ein reibungsloses Zusammenspiel konfiguriert. [sws_divider_top]Bevor ich nun erkl\u00e4re wie man PHP in Nginx einbindet, m\u00fcssen wir ersteinmal wissen, wie die [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[682,142],"tags":[583,1611,1612,2485,1610,333,1582,1583,2481,2482],"class_list":["post-3087","post","type-post","status-publish","format-standard","hentry","category-howto","category-ubuntu","tag-anleitung","tag-beispiel","tag-fast-cgi","tag-howto","tag-installation","tag-linux","tag-nginx","tag-php","tag-ubuntu","tag-wordpress"],"_links":{"self":[{"href":"https:\/\/nodch.de\/index.php?rest_route=\/wp\/v2\/posts\/3087","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nodch.de\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/nodch.de\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/nodch.de\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/nodch.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=3087"}],"version-history":[{"count":0,"href":"https:\/\/nodch.de\/index.php?rest_route=\/wp\/v2\/posts\/3087\/revisions"}],"wp:attachment":[{"href":"https:\/\/nodch.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=3087"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nodch.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=3087"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nodch.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=3087"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}