Nginx Sperren/Verweigern von Zugriff auf mehrere Standorte regex
Ich bin mit Nginx als reverse-proxy für meinen Apache-instillation und als ein Sicherheits-feature sperrt den Zugriff auf phpmyadmin, webalizer, etc für alle, außer localhost, sondern mit nginx macht es Apache denke, es ist der localhost also es zeigt es öffentlich für alle.
<LocationMatch "^/(?i:(?:xampp|security|phpmyadmin|licenses|webalizer|server-status|server-info))">
Order deny,allow
Deny from all
Allow from ::1 127.0.0.0/8 \
fc00::/7 10.0.0.0/8 172.16.0.0/12 192.168.0.0/16 \
fe80::/10 169.254.0.0/16
ErrorDocument 403 /
</LocationMatch>
Muss ich wiederum die oben genannten Regeln, pattern-matching-regex in der folgenden.
location /phpmyadmin {
proxy_pass htt://127.0.0.1:8080/phpmyadmin;
allow 127.0.0.1;
deny all;
}
Sehr geschätzt für die Hilfe von jemand, der sich mit regex in der Nginx.
Die folgende Methode funktioniert aber bricht normalen Website-urls, wäre suchmaschinenfreundlich wie domain.com/forums/server-info
location ~ /(xampp|security|phpmyadmin|licenses|webalizer|server-status|server-info) {
deny all;
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
Als apache-regex hat '^', wir können '^', um auf force-matching-vom Beginn der Pfad zu.
[BEARBEITEN] Die übereinstimmende Zeichenfolge innerhalb der Klammern gespeichert in $1. So können Sie versuchen,
wenn das, was Sie wollen. Aber mein Verständnis ist, dass Sie wollen, passieren die gesamte uri-Pfad zu den apache-server. In diesem Fall, es ist einfacher zu verwenden nginx variable $request_uri.
Sieht aus wie Sie, es ziemlich viel.
Für die Sicherheit, nginx wird von oben nach unten gelesen, also lassen alles verbieten, für das Ende:
Beachten Sie, dass dies für jede url, wie
/phpmyadmin
usw. Darunter/someplaceelse/phpmyadmin
. Sie können voranzustellen ^ aus diesem Spiel für nurhttp://host/phpmyadmin
entspricht. Obwohl aus dem Klang der es Sie eventuell aufgeteilt in mehrere Standort-Richtlinien in diesem Fall.Ich bin mir nicht sicher, was du meinst, die von Suchmaschinen-freundlich. Wenn Sie möchten server-info zugänglich zu sein, entfernen Sie es einfach nur aus der regex | Fällen.
Für die phpmyadmin-proxy:
nginx nehmen alles in die location passen und fügen es
http://127.0.0.1:8080
Können Sie dieses Verhalten ändern mit ~, zum Beispiel.
http://wiki.nginx.org/HttpCoreModule#location
~
?