Elastic BeanstalkのCorretto11プラットフォーム(Beta)でnginxの追加設定をしたらハマった

Spring Bootのアプリケーションをhttpリクエストをhttpsでリダイレクトさせる、といった場合にElasticBeanstalkではnginxのconfigを書き換える必要があるのだが、その場合に設定するべき構文が他のJavaSEプラットフォームで行う構成が違ったようでハマったという話。

前提

locationディレクティブでhttpスキーマで来たリクエストをhttpsでリダイレクトさせるようにしたい。(所謂強制HTTPS)
解決方法がnginxによるリダイレクト処理のため設定されたServerディレクティブ内にlocationを書いて設定をオーバーライドしたい

結論

$ zipinfo xxx.zip
Archive:  xxx.zip
Zip file size: 171415974 bytes, number of entries: 7
-rw-r--r--  2.0 unx 189774452 b- defN 20-Feb-16 04:11 yyy.jar
-rw-r--r--  2.0 unx       87 b- defN 20-Feb-17 01:13 Procfile
drwxr-xr-x  2.0 unx        0 b- defN 20-Feb-16 12:07 .platform/
drwxr-xr-x  2.0 unx        0 b- defN 20-Feb-16 14:27 .platform/nginx/
drwxr-xr-x  2.0 unx        0 b- defN 20-Feb-16 14:27 .platform/nginx/conf.d/
drwxr-xr-x  2.0 unx        0 b- defN 20-Feb-17 01:13 .platform/nginx/conf.d/elasticbeanstalk/
-rw-r--r--  2.0 unx      665 b- defN 20-Feb-16 13:44 .platform/nginx/conf.d/elasticbeanstalk/00_application.conf
7 files, 189775204 bytes uncompressed, 171415038 bytes compressed:  9.7%
結論からするとこんな構成のzipファイルを突っ込んで運用するようにした。
location / {
     set $redirect 0;
     if ($http_x_forwarded_proto != "https") {
       set $redirect 1;
     }
     if ($http_user_agent ~* "ELB-HealthChecker") {
       set $redirect 0;
     }
     if ($redirect = 1) {
       return 301 https://$host$request_uri;
     }

     proxy_pass          http://127.0.0.1:5000;
     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;
}
00_application.confというファイルがデフォルトでlocationディレクティブのルートパスを握った状態でEC2インスタンスが構築されるので、上書きするようコンフィグファイルを含めてデプロイすれば良いという結論。
Corretto11プラットフォームはこの先nginxのデフォルトのconfigが変わる可能性もあるので、少しでも詰まったらデプロイ済みのEC2インスタンスにSSHで入って目で現状のnginxの設定ファイルの構成を確認する、等出来れば詰まることもなかったなあと思いました。