带有Docker,Node和Nginxconfiguration问题的AWS EB

在AWS上,我configuration了Elastic BeanStalk在Elastic Load Balancer后面部署多个运行Dockerized Node应用程序的EC2实例。 另外,我有AWS Certificate Manager工作,并通过SSL通过https加载站点。 这是我想要完成的:

  1. 自动将非wwwredirect到www.domain.com
  2. 自动将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上的泊坞窗容器中运行,并且该端口已公开。

四个问题:

  1. 这是用AWS做到这一点的正确方法吗?
  2. 这个nginxconfiguration文件是否正确(redirect到www和https)?
  3. 在NGINXconfiguration中,我需要另一个SSL证书吗? 我有一个在使用AWSauthenticationpipe理器的域级别
  4. 将一个redirect拧健康检查和杀死自动部署?

当然,最大的问题是我无法让AWS接受这个configuration。 我究竟做错了什么?

我认为使用AWS内置的function可以简化您的Nginxconfiguration。

证书

使用AWS Certificate Manager,您可以将证书作为其configuration的一部分载入ELB,而不是您的EC2实例。

适用于弹性负载平衡器的ACM SSL证书


redirectApex域名/ SSL

对于redirect,在Route53 www使用别名redirect到DNS中的ELB。 ELB包含在其configuration中将httpredirect到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常见问题