如何在 Laravel 的 Forge 中使用 .htpasswd 保护整个 domain/directory

How to protect entire domain/directory with .htpasswd in Laravel's Forge

我在使用密码提示保护整个域时遇到问题。我需要对服务器执行此操作(就像在 Apache 中使用 .htaccess 一样)。

我的网站托管在 DigitalOcean 服务器上,该服务器由 Laravel 的 Forge 提供。该网站本身是一个 Laravel 应用程序。

我一直在阅读并密切关注 Matt Stauffer's post 关于使用 Laravel Forge 保护整个域的密码。我已按照这些步骤操作,系统要求我提供用户名和密码。这很好。然而,当我输入应该是正确的用户名和密码时,我得到了“403 Forbidden”Nginx 页面。

用户名和密码与.htpasswd文件中的用户名和密码一致(我已经在Laravel的public目录下设置了这个文件)。

  1. Matt Stauffer 的 post 日期为 2014 年,我想知道是否有 post 中概述的详细信息变得过时或更有可能,我是 遗漏了什么?
  2. .htpasswd 文件是否应该在 Laravel 的 public 目录中 应用程序还是应用程序之外?
  3. 设置用户密码的正确加密方式是什么 带有 Nginx v.1.11.9 的 .htpasswd 文件?

下面是当前 nginx 设置的一个片段:

    location / {
       try_files $uri $uri/ /index.php?$query_string;

       auth_basic            "Restricted Area";
       auth_basic_user_file  /home/forge/sitename.com/.htpasswd;
    }

在此先感谢您的帮助!

加文

文件可以存储在任何地方,真的。不过,我建议不要将它放在任何可以在线访问的地方。通常,我最终会把它放在例如/etc/nginx/.htpasswd.

如果您想保护整个内容,这些行不应位于位置块中,而应位于服务器块中。像这样:

... stuff

auth_basic "Restricted Content";
auth_basic_user_file /etc/nginx/.htpasswd;

# FORGE CONFIG (DOT NOT REMOVE!)
... more stuff

该文件应由每个经过身份验证的用户对应的一行组成,其中每行的格式为 username:encrypted-password。有很多生成 .htpasswd 的方法,我通常只是 google 用于某些东西,例如http://www.htaccesstools.com/htpasswd-generator/

您也可以通过例如创建它htpasswd 实用程序,但它是 Apache 服务器包的一部分,因此在使用 nginx 时安装它没有什么意义。