Wenn Sie versuchen, den Zugriff auf statische Dateien zu beschränken, kann das Problem durch try_files $uri =404
(Standard) verursacht werden, das übereinstimmen kann, wenn die Dateien am angegebenen Speicherort vorhanden sind. Das folgende Beispiel könnte zu kompliziert aussehen, aber Nginx-Fähigkeiten demonstrieren und sollte ziemlich kugelsicher sein.
Ich gehe davon aus folgenden Verzeichnisstruktur:
/var/www/
├── chroot
├── _first
│ └── index.html
├── index.html
└── _second
└── index.html
und Site-Konfiguration:
# proxy server for accessing real files
server {
listen 8080;
index index.html index.htm;
server_name _;
root /var/www;
try_files $uri $uri/ =404;
}
server {
listen 80;
index index.html index.htm;
server_name _;
root /var/www/chroot; # empty jail directory
try_files index.htm =404; # non-existing location
location ^~ /first {
# in case that $uri exists, deny rule is not applied
allow 127.0.0.1/32;
deny all;
try_files $uri @proxy;
}
location @proxy {
rewrite ^/first(.*)$ /_first/$1 break;
proxy_pass http://127.0.0.1:8080;
proxy_redirect off;
proxy_set_header Host $host;
}
location ^~ /second {
rewrite ^/second(.*)$ /_second/$1 break;
proxy_pass http://127.0.0.1:8080;
proxy_redirect off;
proxy_set_header Host $host;
}
# shoud match all not above
location/{
deny all;
return 403;
}
}
nun einigen grundlegender Test, wenn Sie von den weißen Liste IP zuzugreifst:
$ curl -L localhost:80/first
first
öffentlicher Endpunkt
$ curl -L localhost:80/second
second
andere URI sollte wie der Versuch, "private" URIs in 403
führen zuzugreifen:
$ curl -L localhost:80/_first
<html>
<head><title>403 Forbidden</title></head>
<body bgcolor="white">
<center><h1>403 Forbidden</h1></center>
<hr><center>nginx/1.1.19</center>
</body>
</html>
Es ist nicht für mich arbeiten. Ich versuche, den Zugriff auf/zuerst zuerst zu beschränken, aber selbst wenn ich den Ort verlassen^~/erste/leer bekomme ich 404, ich habe es auch mit allow getestet und ich bekomme die gleiche Antwort 404, auch wenn remove 404 zurück kann das nicht herausfinden. – HSC
@HSC siehe die aktualisierte Antwort. Umschreibungen sind nicht notwendig, das ist nur ein etwas komplexeres Szenario. Ich kann es entfernen, wenn es zu verwirrend ist. – Tombart