前提
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の設定ファイルの構成を確認する、等出来れば詰まることもなかったなあと思いました。
エンジニアとして働く90年生まれ。Web系技術を追っかけたり、PCガジェットや自転車いじりが趣味。オーディオオタク。