Nginx Sperren / Verweigern Zugriff auf mehrere Standorte Regex

8

Ich benutze Nginx als Reverse Proxy für meine Apache Instillation und als Sicherheitsfeature blockiert es den Zugriff auf phpmyadmin, webalizer usw. für jeden außer localhost, aber mit nginx macht Apache es für localhost, so dass es öffentlich für alle sichtbar ist.

%Vor%

Ich muss das oben beschriebene Muster für reguläre Ausdrücke in das folgende einfügen:

%Vor%

Vielen Dank für die Hilfe von jedem, der mit Regex in Nginx vertraut ist.

Die folgende Methode funktioniert, aber bricht normale Site-URLs ab, die suchmaschinenfreundlich sind, wie z. B. domain.com/forums/server-info

%Vor%     
C0nw0nk 16.03.2013, 15:06
quelle

2 Antworten

8

Da die Apache Regex '^' hat, können wir auch '^' setzen, um das Matching vom Anfang des Pfades zu erzwingen.

%Vor%

[EDIT] Die übereinstimmende Zeichenfolge in den Klammern wird in $ 1 gespeichert. So können Sie versuchen

%Vor%

wenn Sie das wollen. Ich verstehe jedoch, dass Sie den gesamten uri-Pfad an den Apache-Server übergeben möchten. In diesem Fall ist es einfacher, die nginx-Variable $ request_uri zu verwenden.

    
Chuan Ma 16.03.2013, 18:38
quelle
2

Sieht aus, als hättest du es ziemlich genau. Für die Sicherheit liest nginx von oben nach unten, also leugne alles für das Ende:

%Vor%

Beachten Sie, dass dies für jede URL wie /phpmyadmin usw. gilt. Einschließlich /someplaceelse/phpmyadmin . Sie können dieser Übereinstimmung ein ^ -Zeichen für nur http://host/phpmyadmin -Matches voranstellen. Obwohl Sie es in diesem Fall möglicherweise in mehrere Direktiven aufteilen müssen.

Ich bin mir nicht sicher, was Sie mit Suchmaschine freundlich meinen. Wenn Sie möchten, dass Server-Informationen zugänglich sind, entfernen Sie sie einfach aus dem Regex | Fälle.

Für den phpmyadmin-Proxy:

%Vor%

nginx nimmt alles in der location match und fügt es an http://127.0.0.1:8080

an

Sie können dieses Verhalten beispielsweise mit ~ ändern. Ссылка

    
Evan Cordeiro 16.03.2013 17:49
quelle

Tags und Links