【发布时间】:2020-02-23 13:04:45
【问题描述】:
我有一个在 aws ecs ec2 实例上运行的前端 Angular 应用程序,并且两者都连接到网络负载均衡器的 TCP 端口 443 和 80。我将在这个具有多个域名的 nginx docker 容器上配置许多 vhost。在 ecs 服务中,负载均衡的容器被指定为端口 443。我们必须选择容器的端口 443 或 80 来进行负载均衡。 https://prnt.sc/pocu41。在 https 上,网站加载正常。但是在http上我得到了错误
The plain HTTP request was sent to HTTPS port
我打算在 docker 容器上使用 ssl 证书,而不是在负载均衡器上使用 ssl。如果我在负载均衡器上选择 ssl,那么我们需要在应用程序负载均衡器默认证书中使用多域 ssl,并且在有数百个域时可能不可行。
我的 Nginx 配置文件看起来像这样
server {
listen 80;
server_name example.com;
root /usr/share/nginx/html/docroot;
index index.html index.htm;
include /etc/nginx/mime.types;
gzip on;
gzip_min_length 1000;
gzip_proxied expired no-cache no-store private auth;
gzip_types text/plain text/css application/json application/javascript application/x-javascript text/xml application/xml application/xml+rss text/javascript;
location / {
try_files $uri $uri/ /index.html;
}
}
server {
listen 443 ssl;
listen [::]:443 ssl;
ssl on;
ssl_certificate /etc/nginx/ssl/example.com/example.com.crt;
ssl_certificate_key /etc/nginx/ssl/example.com/example.com.key;
server_name example.com;
root /usr/share/nginx/html/docroot;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
知道我们如何解决这种情况吗?
【问题讨论】:
标签: docker nginx amazon-ecs aws-load-balancer aws-application-load-balancer