我有一个运行在aws ec2实例上的前端角应用程序,它们都连接到网络负载均衡器的TCP端口443和80。我将在这个带有多个域名的nginx停靠容器上配置许多vhost。在ecs服务中,用于负载平衡的容器作为端口443。我们必须选择集装箱的443个港口或80个港口来平衡负荷。https://prnt.sc/pocu41。在https上,站点正在很好地加载。但是在http上我得到了错误
The plain HTTP request was sent to HTTPS port我计划在码头容器上使用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;
}
}知道我们怎么解决这个问题吗?
发布于 2019-10-28 10:36:46
我计划在码头容器上使用ssl证书,而不是在负载均衡器上使用ssl。如果在负载均衡器上选择ssl,那么我们需要在应用程序负载均衡器默认证书中使用多域ssl,并且在有数百个域时可能不可行。
您的这个假设似乎不正确,您可以从LB创建*证书,也可以配置来自ACM的倍数。您可以使用ACM与负载均衡器和它的完全免费的,为什么我要费心管理SSL在应用程序级别?如果不需要北草坪会议大楼,我为什么要在应用程序级别打开端口80,而我可以使用应用程序LB重定向?
AWS证书管理器定价
通过AWS证书管理器提供的公共SSL/TLS证书是免费的。您只为运行应用程序而创建的AWS资源付费。
第二,使用有什么特殊的原因吗?对于web应用程序,我永远不会选择网络均衡器,对于TCP级别的通信,北草坪会议大楼是有意义的,但我将选择应用LB进行HTTP通信,它提供了诸如主机基础路由、重定向和基于路径的路由等高级路由,这将消除Nginx的需求。
容器是为轻量级任务设计的,AWS建议内存大约为300-500MB,以及CPU的相同建议。
您知道在容器级别上SSL终止的成本吗?
SSL流量可以是计算密集型,因为它需要通信量的加密和解密。SSL依赖公钥加密技术来加密客户端和服务器之间的通信,从而安全地跨网络发送消息。
SSL在LB层终止的优势
需要在负载均衡器处终止SSL,因为解密是资源和CPU密集型的。在负载均衡器上增加了解密负担,使服务器能够将处理能力用于应用任务,这有助于提高性能。它还简化了SSL证书的管理。
new-tls-termination-for-network-load-balancers

10-tips-to-improve-the-performance-of-your-aws-application
因此,基于此,我不会像@Linpy所建议的那样解决您的问题,如果您还想去,您也可以这样做,dealing-with-nginx-400-the-plain-http-request-was-sent-to-https-port-error。
https://stackoverflow.com/questions/58587976
复制相似问题