あまり使わないテクニックですが、awsで必要になった案件があったので紹介します。
調べても見つからなく、方法に気づくまで苦労しました。
ドメインが沢山あり、常に増減する。
毎回設定ファイルを登録してnginxをリロードはやりたくない。
これはよくあるパターンで簡単ですね。
apacheの %0 に相当するのが、$host です。
デフォルトサーバーのみ設定し、アクセスしてきたドメイン名でルートディレクトリが変わるようにすればいいだけです。
細かく分けたい場合は、rewrite を使えばいいですよね。
では、nginxをリバースプロキシとして使い、別サーバーにドメインごとのパスでコンテンツを置いた場合はどうでしょう。
proxy_pass でURLを指定ですが、なんと $host 変数が使えません。
これを解決する簡単な方法の一つに、あらかじめパスを変換してからリダイレクトする方法があります。
EC2にnginxを入れて、S3にアクセスする設定。
location / {
rewrite /(.*) /s3-バケット名/$host/$1 break;
proxy_pass https://s3-ap-northeast-1.amazonaws.com/;
}
これで、リダイレクト先のパスにrewriteの内容が適用されて内部リダイレクトされます。
ちなみにEC2にgoofysでマウントも試しましたが、重すぎて話になりませんでした。
マウントはあくまで管理用としてしか使えませんね。
EFSがはやく東京リージョンに来てくれればこんな変な事しないで済むのね。