我正在尝试在运行nodejs的弹性beanstalk实例上设置基本身份验证,但是,我似乎无法使其工作。我已遵循本指南Nginx Server on Amazon EC2,但http流量仍然通过nginx实例。我认为这是因为ec2实例上的nginx服务器不是我需要更改virtual.conf
文件的服务器。我认为nginx服务器完全在另一个实例上,但我似乎无法找到它。我认为这是因为当我ping我的站点的域名时,它的IP是nginx服务器而不是我的弹性IP。有关如何配置nginx以限制在Elastic beanstalk上访问我网站的http和https流量的任何想法?
答案 0 :(得分:1)
虽然这不是您问题的直接答案,但我在寻找AWS的HTTP基本身份验证资源方面遇到了很多麻烦。
我最终从Nginx切换到Apache并在PROJECT_ROOT / .ebextensions / apache.conf中使用了这个配置:
files:
"/etc/httpd/conf.d/allow_override.conf":
mode: "000644"
owner: ec2-user
group: ec2-user
encoding: plain
content: |
<Directory /var/app/current/>
AllowOverride AuthConfig
</Directory>
"/etc/httpd/conf.d/auth.conf":
mode: "000644"
owner: ec2-user
group: ec2-user
encoding: plain
content: |
<Directory /var/app/current/>
AuthType Basic
AuthName "Myproject Prototype"
AuthUserFile /etc/httpd/.htpasswd
Require valid-user
</Directory>
"/etc/httpd/.htpasswd":
mode: "000644"
owner: ec2-user
group: ec2-user
encoding: plain
content: |
myusername:mypassword-generated-by-htpasswd
请注意,这并不理想,因为您最终在回购的源代码中拥有密码保护......但是,我无法在任何地方找到更好的方法。我目前正在探索将HTTP Auth烘焙到ec2实例中,将实例保存为AMI,并将该AMI用于我的beanstalk中自动生成的实例。
甚至不让我开始在s3存储桶前面使用HTTP Auth,AWS不支持这种情况,并要求您将DNS指向第三方服务!
答案 1 :(得分:0)
管理Elastic Beanstalk的nginx Basic身份验证的关键因素是要识别conf文件是由beantalk管理的,因此,在对其进行修改时,需要在/tmp/deployment/config
中编辑该文件。其中的所有文件都将被复制到目标位置,并通过将文件名的#
字符替换为/
来计算目标位置。并且由于/tmp/deployment/config/#etc#nginx#conf.d#00_elastic_beanstalk_proxy.conf
文件不是在commands
步骤中创建的,因此您需要在container_commands
步骤中对其进行修改。
对我来说,以下工作奏效了。
files:
/etc/nginx/.htpasswd:
mode: "000755"
owner: root
group: root
# the content of htpasswd.
# Obtain it by `htpasswd -nb USER PASSWORD`
content: "USER_NAME:HASHED_PASS"
container_commands:
add-basic:
command: |
set -ex
EB_CONFIG_STAGING_DIR=$(/opt/elasticbeanstalk/bin/get-config container -k config_staging_dir)
file_name="${EB_CONFIG_STAGING_DIR}/$(echo /etc/nginx/conf.d/00_elastic_beanstalk_proxy.conf | sed -e 's|/|#|g')"
sed -i -e '
/location \// {
s|$|\nauth_basic "Restricted Area";\nauth_basic_user_file /etc/nginx/.htpasswd;|
:loop
n
b loop
}' "$file_name"