如何使用 Nginx 限制多个目录但仍可访问文件?

如何使用 Nginx 限制多个目录但仍可访问文件?

我想知道如何让人们通过直接链接访问我服务器上的文件,但限制他们访问所有目录?

例如:我希望他们看到 www.site1.com/usa/newyork/1.html 我不希望人们能够访问 www.site1.com/usa/ 或 www.site1.com/usa/newyork

我已经尝试过;命令:sudo nano /etc/nginx/sites-available/site1.com ... location ~ /(usa) {deny all; return 404; } ...

但之后我无法自己访问其余内容...即使有直接链接:www.site1.com/usa/newyork/1.html

感谢您的帮助,

八度音程

答案1

问题解决了!

因此,默认情况下,Nginx 有一个名为 autoindex 的选项设置为关闭!此命令行:autoindex on; 将激活查看您的目录的能力(对所有人)。

就我而言,我想限制人们仅通过输入 www.exemple.com/test1/test2 就浏览我的服务器,并且无需指定指向它的直接链接就可以看到其中的内容,例如:www.exemple.com/test1/test2/image1.png

还有一个重要的命令,它设置文件搜索的优先级;

位置 / { try_files $uri $uri/ =404; }

此命令意味着它将首先尝试访问文件,然后访问文件夹,如果没有任何效果,则会给出错误 404。更多信息:https://stackoverflow.com/questions/17798457/how-can-i-make-this-try-files-directive-work

另外,我的配置已将 index.html、index.php、index.htm 设置为默认值。因此,如果您不希望人们在未输入完整路径的情况下访问其他文件夹,请更改默认设置或更改文件的名称,例如:index1.html...

相关内容