这是一个非常基本的问题,但我找不到任何关于如何设置的文档。我有一个基本的 nginx 个人 Web 服务器设置,它几乎是开箱即用的。我想托管一个使用我想隐藏的数据库的页面。设置私有目录来存储敏感信息的最佳方法是什么,是该页面的私有子目录,还是公共托管之外的更站点范围的目录。
答案1
location
您可以在 中使用 HTTP 基本身份验证指令,使子目录需要用户名和密码nginx.conf
。如果没有用户名或密码,您将无法访问该目录。
最好事先在您的网站上运行 TLS,因为如果您的网站未加密,那么有人就可以看到您的用户名/密码。
您将需要htpasswd
安装该程序。在某些发行版中,包含该程序的软件包名为apache2-utils
,在其他发行版中则为httpd-tools
。将其替换username
为您想要的用户名。它将提示您输入密码。
htpasswd -c /etc/nginx/htpasswd username
- 可以通过使用备用用户名重复该命令来创建多个用户。
然后,在nginx.conf
服务器块内的文件中,添加下面的位置指令,将其替换/privatedir
为您要保护的目录,并将Private Directory
其替换为您想要在登录提示符下显示的消息:
location /privatedir {
auth_basic "Private Directory";
auth_basic_user_file /etc/nginx/htpasswd;
}
重新启动nginx
,如上例所示,您的目录/privatedir
将需要用户名和密码才能访问。如果没有提供,或者用户名和密码无效,它将给出 HTTP 401 未授权消息。
有关 HTTP 基本身份验证的更多信息,请务必检查nginx 的文档