14

我最近使用 Amazon Linux AMI 创建了一个新的 Amazon EC2 实例。强制访问域的用户在允许访问站点之前输入用户名/密码的最佳方法是什么?

我目前正在使用 apache http 服务器,并看到一些资源表明我需要使用 .htaccess 文件,但正在寻找更简洁的解释。

4

4 回答 4

29

通过 Htaccess 密码保护站点

  1. 在要保护的文件夹中创建一个包含以下内容的 .htaccess 文件:

    AuthType Basic
    AuthName "Password Protected Area"
    AuthUserFile /var/www/admin/.htpasswd
    Require valid-user
    
  2. .htpasswd在相同或最好是外部文件夹中创建一个文件/var/www

    为了演示,我在上面使用了一个虚拟路径。.htpasswd 文件应包含您的密码 salt 使用此生成器创建您的.htpasswd文件。

  3. 假设您使用的是 ubuntu,您必须通过此文件启用 htaccess 覆盖:/etc/apache2/sites-available/default

    将“AllowOverride None”更改为“AllowOverride All”:

    <Directory /var/www/>
       Options Indexes FollowSymLinks MultiViews
       AllowOverride None
       Order allow,deny
       allow from all
    </Directory>
    

注意:您可能需要通过命令行在 ssh 中进行编辑:sudo nano /etc/apache2/sites-available/default

  1. sudo /etc/init.d/apache2 reload
于 2013-08-12T02:37:50.330 回答
5

如果您正在寻找的只是服务器级别的访问控制(即不修改您的应用程序),您可以使用基本身份验证。这是在 Apache Web 服务器级别实现的,如果需要,可以使用 .htaccess 文件在逐个目录的基础上进行控制。

这是 Apache 文档的链接

http://httpd.apache.org/docs/2.2/howto/auth.html

这是一个如何实现的简单示例

http://doc.norang.ca/apache-basic-auth.html

于 2012-12-28T23:29:07.437 回答
1

您需要生成密码用户名+密码字符串进行身份验证并将其写入文件。

  • 您可以使用HTTP 密码生成器工具来执行此操作。
  • 将获得的字符串复制粘贴到 Webroot 之外的任何位置的新文件 (.htpasswd) 中(最好保留在用户主目录内的任何位置)。
  • 在 .htaccess 文件中添加以下行。
AuthType Basic
AuthName "Require Authentication"
AuthUserFile [PATH_TO_FILE]/.htpasswd
Require valid-user
  • 如果密码未触发,请检查 .htaccess 文件的权限。

  • 如果验证失败,请检查指定位置是否存在 .htpasswd 文件。(确保您的用户帐户对 .htpasswd 文件有足够的权限来读取)

  • 您无需重新启动服务器即可实现此目的。

希望这可以帮助。

于 2017-05-01T05:09:56.477 回答
0

生成加密密码并添加到 .htpasswd 文件

$ htpasswd -nbm username Password

.htaccess 文件条目

AuthType Basic
AuthName "My Protected Area"
AuthUserFile /absolute/path/to/password/file
Require valid-user

有关更多详细信息,请参阅此博客文章 - iCodefy

于 2017-07-10T20:41:32.207 回答