我有一个在 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 conf 看起来像这样
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;
}
}
知道我们如何解决这种情况吗?