带有Docker,Node和Nginxconfiguration问题的AWS EB
在AWS上,我configuration了Elastic BeanStalk在Elastic Load Balancer后面部署多个运行Dockerized Node应用程序的EC2实例。 另外,我有AWS Certificate Manager工作,并通过SSL通过https加载站点。 这是我想要完成的:
- 自动将非wwwredirect到www.domain.com
- 自动将httpredirect到https
我正在尝试使用NGINX来实现这一点,并且我想要进行自动化处理,以便通过缩放规则启动的新实例自动包含此configuration。
经过一番研究,我发现有些人通过项目根目录下的.ebextensions / nginx.config文件完成了这个任务。
这是我的nginx覆盖configuration文件:
files: /etc/nginx/sites-available/elasticbeanstalk-nginx-docker-proxy.conf: mode: "000644" owner: root group: root content: | map $http_upgrade $connection_upgrade { default "upgrade"; "" ""; } server { listen 80; return 301 https://www.$host$request_uri; } server { listen 443 ssl; gzip on; gzip_comp_level 4; gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript; if ($time_iso8601 ~ "^(\d{4})-(\d{2})-(\d{2})T(\d{2})") { set $year $1; set $month $2; set $day $3; set $hour $4; } access_log /var/log/nginx/healthd/application.log.$year-$month-$day-$hour healthd; access_log /var/log/nginx/access.log; location / { proxy_pass http://docker; proxy_http_version 1.1; proxy_set_header Connection $connection_upgrade; proxy_set_header Upgrade $http_upgrade; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }
节点应用程序正在端口3000上的泊坞窗容器中运行,并且该端口已公开。
四个问题:
- 这是用AWS做到这一点的正确方法吗?
- 这个nginxconfiguration文件是否正确(redirect到www和https)?
- 在NGINXconfiguration中,我需要另一个SSL证书吗? 我有一个在使用AWSauthenticationpipe理器的域级别
- 将一个redirect拧健康检查和杀死自动部署?
当然,最大的问题是我无法让AWS接受这个configuration。 我究竟做错了什么?
我认为使用AWS内置的function可以简化您的Nginxconfiguration。
证书
使用AWS Certificate Manager,您可以将证书作为其configuration的一部分载入ELB,而不是您的EC2实例。
适用于弹性负载平衡器的ACM SSL证书
redirectApex域名/ SSL
对于redirect,在Route53 www
使用别名redirect到DNS中的ELB。 ELB包含在其configuration中将http
redirect到https
。 请注意, http(s)://yourdomain.com
(没有www
或子域)被称为APEX域,并有一些限制。 在AWS中使用ELB的alias
是一种受支持的redirect方法。
问:我可以在我的弹性负载平衡器上指定我的区域顶点(example.com与www.example.com)吗?
是。 Amazon Route 53提供称为“别名”logging的特殊loggingtypes,可让您将区域顶点(example.com)的DNS名称映射到您的ELB DNS名称(即elb1234.elb.amazonaws.com)。 与Amazon Elastic Load Balancer相关联的IP地址随时可能会由于扩展,缩小或软件更新而发生变化。 路由53响应每个有负载平衡器的一个或多个IP地址的别名logging请求。 查询到别名映射到ELB负载平衡器的logging是免费的。 这些查询在Amazon Route 53使用情况报告中列为“Intra-AWS-DNS-Queries”。
亚马逊路线53常见问题
- 如何将Docker容器镜像更新从AWS ECR部署到ECS?
- 如何通过使用Apache的PHP7.1在AMI Linux上的本地Docker开发中连接到MySQL
- 通过Terraform发送Docker日志到AWS CloudWatch
- Auth0 OWIN API在通过AWS EC2上的Docker Container发布时不validationJWT令牌
- 在ECS中运行一个etcd容器需要什么入口点/命令?
- aws中的docker swarm在重启后无法访问
- 使用Elastic Beanstalk在AWS上转到Web应用程序,不会在日志中显示输出
- ECS代理无法成功从ECR中拉出图像
- 当docker运行时,会发生错误。 “ValueError:无法configuration处理程序”守望台“:您必须指定一个区域。”