【发布时间】:2012-12-13 23:34:25
【问题描述】:
我最近使用 Amazon Linux AMI 创建了一个新的 Amazon EC2 实例。强制访问域的用户在允许访问站点之前输入用户名/密码的最佳方法是什么?
我目前正在使用 apache http 服务器,并且看到一些资源表明我需要使用 .htaccess 文件,但正在寻找更简洁的解释。
【问题讨论】:
标签: apache amazon-ec2 webserver
我最近使用 Amazon Linux AMI 创建了一个新的 Amazon EC2 实例。强制访问域的用户在允许访问站点之前输入用户名/密码的最佳方法是什么?
我目前正在使用 apache http 服务器,并且看到一些资源表明我需要使用 .htaccess 文件,但正在寻找更简洁的解释。
【问题讨论】:
标签: apache amazon-ec2 webserver
在要保护的文件夹中创建一个 .htaccess 文件,内容如下:
AuthType Basic
AuthName "Password Protected Area"
AuthUserFile /var/www/admin/.htpasswd
Require valid-user
在/var/www 之外的同一文件夹或最好是在一个文件夹中创建一个.htpasswd 文件。
为了演示,我在上面使用了一个虚拟路径。 .htpasswd 文件应包含您的密码盐
使用this generator 创建您的.htpasswd 文件。
假设您使用的是 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
sudo /etc/init.d/apache2 reload【讨论】:
如果您正在寻找的只是服务器级别的访问控制(即不修改您的应用程序),您可以使用基本身份验证。这是在 Apache Web 服务器级别实现的,如果需要,可以使用 .htaccess 文件逐个目录进行控制。
这里是 Apache 文档的链接
http://httpd.apache.org/docs/2.2/howto/auth.html
这里有一个简单的例子说明如何实现
【讨论】:
您需要生成一个密码用户名+密码字符串进行身份验证,并将其写入文件。
AuthType Basic AuthName "Require Authentication" AuthUserFile [PATH_TO_FILE]/.htpasswd Require valid-user
如果密码没有触发,检查.htaccess文件的权限。
如果验证失败,请检查指定位置是否存在 .htpasswd 文件。 (确保您的用户帐户对 .htpasswd 文件有足够的权限来读取)
您无需重新启动服务器即可实现此目的。
希望这会有所帮助。
【讨论】:
生成加密密码并添加到 .htpasswd 文件中
$ htpasswd -nbm username Password
.htaccess 文件入口
AuthType Basic
AuthName "My Protected Area"
AuthUserFile /absolute/path/to/password/file
Require valid-user
【讨论】: