CentOS 7でNginxを使用してwwwをwww以外にリダイレクトする方法

前書き

Webサイトまたはアプリケーションをドメインの背後で実行している場合、ユーザーがプレーンドメイン名_and_ * www サブドメインを介してアクセスできるようにすることが望ましい場合がよくあります。 つまり、「http:// www。[www。]」プレフィックスの有無にかかわらず、ドメインにアクセスできる必要があります。 `+ example.com `または ` www.example.com +`をWebブラウザーで開き、同じコンテンツを表示します。 これを設定するにはさまざまな方法がありますが、一貫性とSEOの考慮のための最適なソリューションは、プレーンまたはwwwのどちらのドメインを選択し、もう一方を優先ドメインにリダイレクトすることです。 このタイプのリダイレクトは Permanent Redirect *または「301リダイレクト」と呼ばれ、DNSリソースレコードとWebサーバーソフトウェアを適切に構成することで簡単にセットアップできます。

このチュートリアルでは、www URLをwww以外にリダイレクトする方法を示します。 CentOS 7のNginxを使用して、「+ www.example.com 」から「 example.com +」へ。 また、www以外のURLからhttp:// www [www]に別の方向にリダイレクトする方法も示します。 このチュートリアルのUbuntu 14.04バージョンは、https://www.digitalocean.com/community/tutorials/how-to-redirect-www-to-non-www-with-nginx-on-ubuntu-14-04 [こちらから入手できます]。

WebサーバーとしてApacheを使用してこのタイプのリダイレクトを実行する場合は、代わりにこのチュートリアルに従う必要があります:https://www.digitalocean.com/community/tutorials/how-to-redirect-www-to-non-www -with-apache-on-centos-7 [CentOS 7上のApacheでwwwをwww以外にリダイレクトする方法]。

前提条件

このチュートリアルでは、スーパーユーザー特権、つまり Nginxを実行しているサーバー上の `+ sudo +`またはルート。 まだセットアップしていない場合は、https://www.digitalocean.com/community/tutorials/initial-server-setup-with-centos-7 [CentOS 7での初期サーバーセットアップ]のチュートリアルに従ってください。

Nginxがインストールされていることを前提としています。 この設定をまだ行っていない場合は、https://www.digitalocean.com/community/tags/nginx [Nginx tag]の下に主題に関するいくつかのチュートリアルがあります。

ドメインを管理しているDNSにレコードを追加できる必要があります。 まだドメインをお持ちでない場合は、ドメインレジストラーからドメインを購入し、レジストラーのDNSまたはhttps://www.digitalocean.com/community/tutorials/how-to-point-to-digitalocean-で管理できます。共通ドメインレジストラからのネームサーバー[DigitalOceanのDNS]。 このチュートリアルでは、https://www.digitalocean.com/community/tutorials/how-to-set-up-a-host-name-with-digitalocean [DigitalOcean DNS]を使用して必要なレコードを作成します。

DNSレコードを設定して始めましょう。

DNSレコードを構成する

目的のリダイレクト、「+ www.example.com 」から「 example.com +」、またはその逆を設定するには、名前ごとに* Aレコード*が必要です。

DNSの管理に使用するものは何でも開きます。 この例では、https://cloud.digitalocean.com/domains [DigitalOcean DNS]を使用します。

ドメイン(ゾーンとも呼ばれる)レコードがまだ存在しない場合は、ここで作成します。 * hostname *はドメインである必要があります。 + example.com +、およびIPアドレスはNginxサーバーのパブリックIPアドレスに設定する必要があります。 これにより、指定したIPアドレスをドメインにポイントするAレコードが自動的に作成されます。 別のシステムを使用してドメインを管理している場合、これを手動で追加する必要があります。

次に、ホスト名として「www」(または部分的なサブドメインが機能しない場合は「http://www.example.com [www.example.com]」)を含む別のAレコードを追加し、同じIPアドレスを指定します。

両方のレコードを作成すると、次のようになります。

画像:https://assets.digitalocean.com/articles/redirect/dns_a_records.png [必須レコード]

これで、wwwドメインとwww以外のドメインを介してサーバーにアクセスできるようになりますが、リダイレクトを設定する必要があります。 今からそれを行います。

Nginxリダイレクトの構成

301リダイレクトを実行するには、元のサーバーブロックを指す新しいNginxサーバーブロックを追加する必要があります。

エディターでNginxサーバーブロック構成を開きます。 Nginx includeディレクトリに別の設定ファイル、「+ / etc / nginx / conf.d 」を追加し、「 redirect.conf +」と呼びます。

sudo vi /etc/nginx/conf.d/redirect.conf

元のサーバーブロックは既に定義されているはずです。 リダイレクトする方向に応じて、次のオプションのいずれかを使用します。

オプション1:wwwをwww以外にリダイレクトする

ユーザーをwwwからプレーンな非wwwドメインにリダイレクトする場合は、次の構成を挿入します。

新しいサーバーブロック-www以外へwww

server {
   server_name www.;
   return 301 $scheme://$request_uri;
}

保存して終了。 これにより、リクエストを「http://www.example.com [www.example.com]」から「example.com」にリダイレクトするようにNginxが設定されます。 www以外のWebサーバーを定義する別のサーバーブロックがあるはずです。

変更を有効にするには、Nginxを再起動します。

sudo systemctl restart nginx

HTTPSを使用している場合は、「+ listen 」ディレクティブを「+80」ではなく「443」ポートに設定する必要があります。

このcurlコマンドを使用して、非wwwドメインがwwwドメインにリダイレクトされるようにします(強調表示された部分を実際のドメインに置き換えます)。

curl -I http://www.

次のように、www以外のリダイレクト場所を示す「+301 Moved Permanently +」応答が返されるはずです。

Output:HTTP/1.1 301 Moved Permanently
Server: nginx/1.4.6 (Ubuntu)
Date: Mon, 04 May 2015 18:20:19 GMT
Content-Type: text/html
Content-Length: 193
Connection: keep-alive
Location: http:///

もちろん、Webブラウザ(wwwおよび非www)でドメインにアクセスする必要があります。

オプション2:非wwwをwwwにリダイレクトする

ユーザーをプレーンな非wwwドメインからwwwドメインにリダイレクトする場合は、このサーバーブロックを追加します。

新しいサーバーブロック-非wwwからwww

server {
   server_name ;
   return 301 $scheme://www.$request_uri;
}

保存して終了。 これにより、リクエストを「example.com」から「http://www.example.com [www.example.com]」にリダイレクトするようにNginxが設定されます。 www Webサーバーを定義する別のサーバーブロックがあることに注意してください。

変更を有効にするには、Nginxを再起動します。

sudo systemctl restart nginx

HTTPSを使用している場合は、「+ listen 」ディレクティブを「+80」ではなく「443」ポートに設定する必要があります。

このcurlコマンドを使用して、非wwwドメインがwwwドメインにリダイレクトされるようにします(強調表示された部分を実際のドメインに置き換えます)。

curl -I http://

次のように、wwwリダイレクトの場所を示す「+301 Moved Permanently +」レスポンスが返されます。

Output:HTTP/1.1 301 Moved Permanently
Server: nginx/1.4.6 (Ubuntu)
Date: Mon, 04 May 2015 18:20:19 GMT
Content-Type: text/html
Content-Length: 193
Connection: keep-alive
Location: http://www./

もちろん、Webブラウザ(wwwおよび非www)でドメインにアクセスする必要があります。

結論

それでおしまい! これで、Nginxのパーマネントリダイレクトが適切に構成され、ユーザーは非wwwおよびwwwドメインを介してWebサーバーにアクセスできるようになります。

Related