【问题标题】:Password Protect My Website密码保护我的网站
【发布时间】:2012-12-13 23:34:25
【问题描述】:

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

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

【问题讨论】:

    标签: apache amazon-ec2 webserver


    【解决方案1】:

    通过 Htaccess 密码保护网站

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

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

      为了演示,我在上面使用了一个虚拟路径。 .htpasswd 文件应包含您的密码盐 使用this generator 创建您的.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

    【讨论】:

    • 一般来说,当您无权访问主服务器配置文件时,您应该只使用 .htaccess 文件。例如,有一个常见的误解,即用户身份验证应始终在 .htaccess 文件中进行,而近年来,另一个误解是 mod_rewrite 指令必须在 .htaccess 文件中进行。这根本不是那么回事。您可以将用户身份验证配置放在主服务器配置中,这实际上是首选方式。同样,mod_rewrite 指令在许多方面在主服务器配置中工作得更好。
    • 复制和粘贴整段文本时,请注明“Apache.org 的 Apache 教程”。
    • 本来可以的,但我只剩下 7 个字符了。 httpd.apache.org/docs/2.2/howto/htaccess.html段落“何时(不)使用.htaccess文件”
    • 很好的答案。谢谢你。
    【解决方案2】:

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

    这里是 Apache 文档的链接

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

    这里有一个简单的例子说明如何实现

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

    【讨论】:

    • 这有帮助,但我现在遇到了身份验证问题,我很可能会提出一个新问题,提供详细信息。
    【解决方案3】:

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

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

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

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

    希望这会有所帮助。

    【讨论】:

      【解决方案4】:

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

      $ htpasswd -nbm username Password
      

      .htaccess 文件入口

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

      For more details go through this blog post - iCodefy

      【讨论】:

        猜你喜欢
        • 2014-05-24
        • 2013-03-02
        • 2016-05-09
        • 1970-01-01
        • 2020-01-24
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多