将http请求redirect到django nginx服务器上的https时,AWR ALB运行状况检查失败

首先,我使用服务器环境

  • django + nginx + uwsgi
  • AWS ECS + ALB loadbalencer
  • AWS ACM SSL证书

我希望nginx将http请求redirect到https请求在此之前,我testing了是否可以接收http和https请求。 http和https通常都会收到请求。

等/ nginx的/ nginx.conf

user root; worker_processes 5; pid /run/nginx.pid; include /etc/nginx/modules-enabled/*.conf; daemon off; events { worker_connections 768; } http { ## # Basic Settings ## sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; types_hash_max_size 2048; server_names_hash_bucket_size 512; include /etc/nginx/mime.types; default_type application/octet-stream; ## # SSL Settings ## ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE ssl_prefer_server_ciphers on; ## # Logging Settings ## access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log; ## # Gzip Settings ## gzip on; gzip_disable "msie6"; ## # Virtual Host Configs ## include /etc/nginx/conf.d/*.conf; include /etc/nginx/sites-enabled/*; } 

/etc/nginx/sites-enabled/app.conf

 server { listen 80; listen 443 ssl; server_name ~^(.+)$; charset utf-8; client_max_body_size 128M; location / { uwsgi_pass unix:///tmp/app.sock; include uwsgi_params; } } 

要将https请求作为https请求返回,我修改了app.conf文件。

但是我不能通过ALB健康检查。 结果,服务器返回502错误。

/etc/nginx/sites-enabled/app.conf

 server { listen 443 ssl; server_name ~^(.+)$; return 301 https://$server_name$request_uri; } server { listen 443 ssl; server_name ~^(.+)$; charset utf-8; client_max_body_size 128M; location / { uwsgi_pass unix:///tmp/app.sock; include uwsgi_params; } } 

ALB,ECS(EC2)litener已打开所有端口80,443的请求。以下是ECS服务的设置屏幕。

谢谢。

这是ecs服务ALB设置

这是ecs服务设置