Nginx-Unterstützung für .htaccess / Rewrite-Regeln? Unterschiede zu Apache?


16

Ich arbeite schon seit einiger Zeit mit Apache-HTTP-Servern und habe endlich die Umstellung auf Server mit statischen Inhalten neben den anderen Computern mit dynamischen Inhalten vorgenommen.

Ich habe mich gefragt, ob Nginx ".htaccess" -Dateien und Dinge wie mod_rewrite unterstützt.

Da ich sehr an die Syntax gewöhnt bin, habe ich mich gefragt, was die (Syntax-) Unterschiede sind und wie die Lernkurve beim Übergang von Apache-Konfigurationen zu Nginx aussieht.

Antworten:


15

Die Syntax für das Neuschreiben von Nginx ist viel sauberer als das Gegenstück in mod_rewrite:

mod_rewrite-Regel:

 RewriteRule ^[a-z0-9_-]*-f([0-9]+)/?(p([0-9]+)\.html)?$ /viewforum.php?f=$1&start=$3 [QSA,L,NC]

Wird in nginx:

rewrite ^/[a-z0-9_-]*-f([0-9]+)/?(p([0-9]+)\.html)?$ /viewforum.php?f=$1&start=$3 last;

Aber keine .htaccess-Unterstützung ...

Bearbeiten: Ein weiteres Beispiel für die Unterstützung von http://example.com/~username/ URLs in Nginx:

location ~ /~([a-zA-Z0-9]*)/(.*) {
    root /home/;
    autoindex on;
    index index.html;
    rewrite ^/~([a-zA-Z0-9]*)/(.*)$ /$1/www/$2 break;
}


4

Es scheint, dass Nginx ein Mod_rewrite-Äquivalent hat und Dokumentation kann hier gefunden werden . Ich habe nginx selbst nicht verwendet, aber die Dokumentation sieht so aus, als ob die Konfiguration völlig anders wäre, aber es sollte nicht allzu schwer sein zu verstehen, was es tut. Das Wiki scheint viele Beispiele zu haben.

Ich kann nicht antworten, ob Sie pro Verzeichnis Konfigurationsdateien haben können, wie Sie es mit Apache können. Es würde mich nicht überraschen, wenn Sie könnten, denn die Leute erwarten das von der Verwendung von Apache.


0

NGINX unterstützt Konfigurationen in vielen Dateien über die Include-Direktive. Grundsätzlich wird eine Unterkonfiguration geladen und installiert. Es unterstützt auch Joker-Charaktere, so dass es einfach ist, viele von ihnen auf einmal zu laden.

Die einzige Einschränkung (meiner Meinung nach) ist, dass Sie neu laden müssen, wenn die Konfiguration geändert wird. Jeder Benutzer, der eine Konfiguration hat, benötigt möglicherweise Rechte, um nginx config neu zu laden:

/etc/ini.d/nginx Force-Reload (auf Centos)

Ich weiß nicht wirklich, ob es eine Möglichkeit gibt, dies zu vermeiden oder es anders zu machen, da ich NGINX auf vielen Servern mit vielen eigenen Apps (virtuellen Hosts) verwende. Dies würde bedeuten, dass NGINX für Shared Hosting nicht ideal ist.

Trotzdem liebe ich NGINX wirklich, weil die Konfiguration so viel besser lesbar ist als eine böse XML-Datei. Geschmacksfrage, denke ich. Der andere gute Punkt ist natürlich die Geschwindigkeit, wenn es in Ihrem Fall wichtig ist.

Viel Glück, mig

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.