... | @@ -4,9 +4,9 @@ |
... | @@ -4,9 +4,9 @@ |
|
## Allgemeines
|
|
## Allgemeines
|
|
|
|
|
|
Nginx ermöglicht es nicht eine Config-datei im DokumentRoot des VHosts anzulegen, wie Apache es mit der .htaccess handhabt.
|
|
Nginx ermöglicht es nicht eine Config-datei im DokumentRoot des VHosts anzulegen, wie Apache es mit der .htaccess handhabt.
|
|
Anstatt dessen liest Nginx Directorybezogene Anweisungen beim Dienststart ein.
|
|
Anstatt dessen liest Nginx Directory bezogene Anweisungen beim Dienststart ein.
|
|
Diese Anweisungen werden in einer zentralen ConfigDatei verwaltet und bestehen aus Anweisungsblöcken.
|
|
Diese Anweisungen werden in einer zentralen Config-Datei verwaltet und bestehen aus Anweisungsblöcken.
|
|
Die zwei Hauptarten jener Blöcke sind Server- und Locationblöcke.
|
|
Die zwei Hauptarten jener Blöcke sind Server- und Location-Blöcke.
|
|
|
|
|
|
|
|
|
|
***
|
|
***
|
... | @@ -17,13 +17,13 @@ Die zwei Hauptarten jener Blöcke sind Server- und Locationblöcke. |
... | @@ -17,13 +17,13 @@ Die zwei Hauptarten jener Blöcke sind Server- und Locationblöcke. |
|
|
|
|
|
|
|
|
|
Quiqqer bietet die Möglichkeit die Nginx config generieren zu lassen.
|
|
Quiqqer bietet die Möglichkeit die Nginx config generieren zu lassen.
|
|
Dafür muss der folgende Befehl im Rootverzeichnis ausgeführt werden:
|
|
Dafür muss der folgende Befehl im Root-Verzeichnis ausgeführt werden:
|
|
|
|
|
|
./console quiqqer:nginx
|
|
./console quiqqer:nginx
|
|
|
|
|
|
Dieses Tool erstellt die Nginx-Config im Rootverzeichnis von Quiqqer.
|
|
Dieses Tool erstellt die Nginx-Config im Root-Verzeichnis von Quiqqer.
|
|
Den Inhalt dieser Configdatei kopiert man nun und fügt sie in die NginX config ein.
|
|
Den Inhalt dieser Configdatei kopiert man nun und fügt sie in die Nginx config ein.
|
|
Diese residiert im Normalfall unter :
|
|
Diese residiert im Normalfall unter:
|
|
|
|
|
|
/etc/nginx/
|
|
/etc/nginx/
|
|
|
|
|
... | @@ -31,13 +31,13 @@ Dort findet man die nginx.config sowie einen Unterordner "sites-available" |
... | @@ -31,13 +31,13 @@ Dort findet man die nginx.config sowie einen Unterordner "sites-available" |
|
|
|
|
|
/etc/nginx/sites-available/
|
|
/etc/nginx/sites-available/
|
|
|
|
|
|
Dieser Unterordner dient für Vhostbezogene config Dateien, welche in die Hauptconfig eingebunden werden.
|
|
Dieser Unterordner dient für vHost-bezogene config Dateien, welche in die Haupt-Config eingebunden werden.
|
|
Um die Nginx config für Quiqqqer wirksam zu machen legen wir eine neue Datei in diesem Unterordner an.
|
|
Um die Nginx config für Quiqqqer wirksam zu machen legen wir eine neue Datei in diesem Unterordner an.
|
|
|
|
|
|
cd /etc/nginx/sites-avilable
|
|
cd /etc/nginx/sites-avilable
|
|
sudo nano quiqqer.conf
|
|
sudo nano quiqqer.conf
|
|
|
|
|
|
Am einfachsten ist es die von QUIQQER generierte Datei nun zu includieren.
|
|
Am einfachsten ist es die von QUIQQER generierte Datei nun zu inkludieren.
|
|
```
|
|
```
|
|
# Change the path to match your systems confifuration
|
|
# Change the path to match your systems confifuration
|
|
include /var/www/html/quiqqer/etc/nginx/nginx.conf;
|
|
include /var/www/html/quiqqer/etc/nginx/nginx.conf;
|
... | @@ -90,8 +90,8 @@ http { |
... | @@ -90,8 +90,8 @@ http { |
|
```
|
|
```
|
|
|
|
|
|
|
|
|
|
Außerdem müssen die Variablen noch in PHP bekannt gemacht werden, hierfür muss im Location Block folgendes eingefügt werden.
|
|
Außerdem müssen die Variablen noch in PHP bekannt gemacht werden, hierfür muss im Location Block folgendes eingefügt werden.
|
|
QUIQQER legt bereits Konfigurationsdateien, an die von der generierten Datei 'includiert' werden.
|
|
QUIQQER legt bereits Konfigurationsdateien, an die von der generierten Datei 'inkludiert' werden.
|
|
Folgender Inhalt kann in die Datei `/var/www/html/etc/nginx/conf.d/php.include` eingefügt werden:
|
|
Folgender Inhalt kann in die Datei `/var/www/html/etc/nginx/conf.d/php.include` eingefügt werden:
|
|
|
|
|
|
```
|
|
```
|
... | @@ -110,7 +110,7 @@ fastcgi_param GEOIP_LONGITUDE $geoip2_data_postal_code; |
... | @@ -110,7 +110,7 @@ fastcgi_param GEOIP_LONGITUDE $geoip2_data_postal_code; |
|
|
|
|
|
|
|
|
|
#### GeoIP datenbanken
|
|
#### GeoIP datenbanken
|
|
Die Datenbanken für GEO IP können über folgendes Tool bezogen und geupdated werden:
|
|
Die Datenbanken für GEO IP können über folgendes Tool bezogen und aktualisiert werden:
|
|
https://dev.maxmind.com/geoip/geoipupdate/
|
|
https://dev.maxmind.com/geoip/geoipupdate/
|
|
|
|
|
|
|
|
|
... | @@ -134,8 +134,8 @@ Also insbesondere die IP bzw. den Port auf welchen der VHost reagiert und auf we |
... | @@ -134,8 +134,8 @@ Also insbesondere die IP bzw. den Port auf welchen der VHost reagiert und auf we |
|
_Beispiel : \*.example.com oder example.com_
|
|
_Beispiel : \*.example.com oder example.com_
|
|
|
|
|
|
### Location Block
|
|
### Location Block
|
|
Ein Serverblock kann mehrere Locationblöcke beinhalten.
|
|
Ein Serverblock kann mehrere Location-Blöcke beinhalten.
|
|
Locationblöcke sind grundlegend das Äquivalent zur .htaccess Datei.
|
|
Location-Blöcke sind grundlegend das Äquivalent zur `.htaccess` Datei.
|
|
Sie ermöglichen Konfigurationsdirektiven zu einem bestimmten Ort anzugeben.
|
|
Sie ermöglichen Konfigurationsdirektiven zu einem bestimmten Ort anzugeben.
|
|
|
|
|
|
Die Syntax des Location-Blocks ist wie folgt :
|
|
Die Syntax des Location-Blocks ist wie folgt :
|
... | @@ -161,11 +161,11 @@ http://localhost/test/ müsste also mit location = /test/ gematcht werden. |
... | @@ -161,11 +161,11 @@ http://localhost/test/ müsste also mit location = /test/ gematcht werden. |
|
|
|
|
|
|
|
|
|
**Reihenfolge der Selektion**
|
|
**Reihenfolge der Selektion**
|
|
Da wir nun betrachtet haben, wie ein Locationblock aufgebaut ist, werden wir nun genauer betrachten, wie der Server den zu verwendenden Locationblock auswählt.
|
|
Da wir nun betrachtet haben, wie ein Location-Block aufgebaut ist, werden wir nun genauer betrachten, wie der Server den zu verwendenden Locationblock auswählt.
|
|
|
|
|
|
Nginx verwendet einen umfangreichen Algorithmus, welcher bei jedem Request einen passenden Locationblock sucht.
|
|
Nginx verwendet einen umfangreichen Algorithmus, welcher bei jedem Request einen passenden Location-Block sucht.
|
|
|
|
|
|
Kurz zusammengefasst sehen die Schritte wie folgt aus :
|
|
Kurz zusammengefasst sehen die Schritte wie folgt aus:
|
|
|
|
|
|
- Prüfe nicht Reguläre Ausdrücke
|
|
- Prüfe nicht Reguläre Ausdrücke
|
|
|
|
|
... | @@ -194,16 +194,16 @@ Das heißt, es ist möglich in Endlosschleifen zu geraten! |
... | @@ -194,16 +194,16 @@ Das heißt, es ist möglich in Endlosschleifen zu geraten! |
|
|
|
|
|
Da wir nun wissen, welcher Block selektiert wird, sollten wir uns damit befassen, was der Block bewirken kann.
|
|
Da wir nun wissen, welcher Block selektiert wird, sollten wir uns damit befassen, was der Block bewirken kann.
|
|
|
|
|
|
Im Locationblock hat man nun diverse Konfigurationsmöglichkeiten. Unter anderem :
|
|
Im Location-Block hat man nun diverse Konfigurationsmöglichkeiten. Unter anderem:
|
|
|
|
|
|
**index**: Man kann die Indexdatei festlegen
|
|
**index**: Man kann die Indexdatei festlegen
|
|
**root**: Man kann den DirectoryRoot erneut festlegen
|
|
**root**: Man kann den DirectoryRoot erneut festlegen
|
|
|
|
|
|
**Besonderes Augenmerk legen wir aber auf die folgenden Direktiven:**
|
|
**Besonderes Augenmerk legen wir aber auf die folgenden Direktiven:**
|
|
|
|
|
|
- return : Stoppt die weitere Bearbeitung des Requests und sendet eine Statuscode zurück. Entweder ein redirect oder ein Statuscode mit Responsetext.
|
|
- `return`: Stoppt die weitere Bearbeitung des Requests und sendet eine Statuscode zurück. Entweder ein redirect oder ein Statuscode mit Responsetext.
|
|
|
|
|
|
- rewrite: Schreibt einen Teil der URI um und führt einen internen redirect aus.
|
|
- `rewrite`: Schreibt einen Teil der URI um und führt einen internen redirect aus.
|
|
|
|
|
|
- try_files : Prüft gegebene Dateien / Ordner auf Existenz, falls keine davon existiert wird ein interner redirect auf den letzten Parameter ausgeführt
|
|
- try_files : Prüft gegebene Dateien / Ordner auf Existenz, falls keine davon existiert wird ein interner redirect auf den letzten Parameter ausgeführt
|
|
|
|
|
... | @@ -213,21 +213,21 @@ Im Locationblock hat man nun diverse Konfigurationsmöglichkeiten. Unter andere |
... | @@ -213,21 +213,21 @@ Im Locationblock hat man nun diverse Konfigurationsmöglichkeiten. Unter andere |
|
**Allgemeines Format : ** rewrite \<RegEx-pattern\> \<replacement\> [flag]
|
|
**Allgemeines Format : ** rewrite \<RegEx-pattern\> \<replacement\> [flag]
|
|
|
|
|
|
Ersetzt den Teil der URI, der das RegEx-Pattern "matcht" durch das angegeben Replacement.
|
|
Ersetzt den Teil der URI, der das RegEx-Pattern "matcht" durch das angegeben Replacement.
|
|
Soweit nicht durch Flags behandelt, wird auf die neu entstandene URI erneut eine Suche nach passenden Locationblöcken gestartet.
|
|
Soweit nicht durch Flags behandelt, wird auf die neu entstandene URI erneut eine Suche nach passenden Location-Blöcken gestartet.
|
|
|
|
|
|
|
|
|
|
**Flags :**
|
|
**Flags :**
|
|
|
|
|
|
- last : Hört sofort mit Bearbeitung des Requests auf und sucht sofort nach neune Location Blöcken
|
|
- `last`: Hört sofort mit Bearbeitung des Requests auf und sucht sofort nach neuen Location Blöcken
|
|
|
|
|
|
- break : Stoppt Bearbeitung des Requests und sucht **keine** neue Locationblöcke.
|
|
- `break`: Stoppt Bearbeitung des Requests und sucht **keine** neue Locationblöcke.
|
|
|
|
|
|
|
|
|
|
## Vertiefende Literatur
|
|
## Vertiefende Literatur
|
|
|
|
|
|
- Doku : http://nginx.org/en/docs/http/ngx_http_rewrite_module.html#return
|
|
- Doku : http://nginx.org/en/docs/http/ngx_http_rewrite_module.html#return
|
|
|
|
|
|
- Requestprocessing : http://nginx.org/en/docs/http/request_processing.html
|
|
- Request-Processing : http://nginx.org/en/docs/http/request_processing.html
|
|
|
|
|
|
- Ausführliches rewrite Tutorial : https://www.nginx.com/blog/creating-nginx-rewrite-rules/
|
|
- Ausführliches rewrite Tutorial : https://www.nginx.com/blog/creating-nginx-rewrite-rules/
|
|
|
|
|
... | | ... | |