一つのサーバーに複数のドメイン名のウェブページを同居させることはよくある話だと思います。負荷のことを思えばドメイン名単位でサーバーを分けたほうが良いのでしょうが、さしたアクセスが見込めないウェブページを集約しても問題は起きないでしょう。
ただ www.
つきでアクセスされた際に、www.
なしのドメイン名へのリダイレクトをさせる処理をドメイン名単位で一つ一つ書いていくのは無駄です。
nginx の server_name
ディレクティブでは正規表現を使えます。nginx が正規表現エンジンとして使っている PCRE では名前付きキャプチャに対応しているので次のように書けます。
/etc/nginx/sites-avalable/www.example.com.conf
server {
listen 80;
server_name "~^www\.(?<naked_domain>.*)$";
set $proto $scheme;
if ($http_x_forwarded_proto = "https") {
set $proto $http_x_forwarded_proto;
}
if ($http_cloudfront_forwarded_proto = "https") {
set $proto $http_cloudfront_forwarded_proto;
}
rewrite . $proto://$naked_domain$uri permanent;
}
上位に CloudFront や CloudFlare といった CDN が存在しない場合は、$proto
周りの小細工が不要になり、もう少し単純になります。nginx の設定ファイルは簡単に書けて良いですね。
ぜひご活用くださいませ。