ウェブサイト検索

NGINX で名前ベースおよび IP ベースの仮想ホスト (サーバー ブロック) をセットアップする方法


開発され利用可能になってから比較的短期間 (10 年強) で、Nginx はその高いパフォーマンスと低いメモリ使用量により、Web サーバーの中で持続的かつ着実な成長を遂げてきました。

Nginx は無料のオープン ソース ソフトウェアであるため、Linux や *nix サーバーだけでなく、Microsoft Windows でも、世界中の何千もの Web サーバー管理者によって採用されています。

お見逃しなく: Apache の名前ベースおよび IP ベースの仮想ホスティング

Apache に最も慣れている人にとって、Nginx は学習曲線がやや急なかもしれません (少なくとも私の場合はそうでした) が、いくつかセットアップすれば必ず効果があります。サイトのトラフィックとリソース使用量の統計の表示を開始します。

この記事では、Nginx を使用してCentOS/RHEL で名前ベースおよびIP ベースの仮想ホスティングを設定する方法について説明します。 7 サーバーとDebian 8 およびその派生版 (Ubuntu 15.04 とそのスピンオフから始まります)。

この記事のテスト シナリオは次のとおりです。

  1. オペレーティング システム: Debian 8 Jessie サーバー [IP 192.168.0.25]
  2. ゲートウェイ: ルーター [IP 192.168.0.1]
  3. ウェブサーバー: Nginx 1.6.2-5
  4. ダミー ドメイン: www.tecmintlovesnginx.com および www.nginxmeanspower.com。

Nginx Webサーバーのインストール

まだ Nginx をインストールしていない場合は、先に進む前にインストールしてください。開始するためにヘルプが必要な場合は、このサイトで nginx を簡単に検索すると、このトピックに関するいくつかの記事が表示されます。このページの上部にある虫眼鏡アイコンをクリックし、キーワード「nginx」を検索します。このサイトで記事を検索する方法がわからない場合でも、ここに nginx 記事へのリンクを追加しましたので、ご心配なく。参照して、それぞれの Linux ディストリビューションに従ってインストールしてください。

  1. RHEL/CentOS 7 のソースから Nginx をインストールしてコンパイルする
  2. Debian 8 に Nginx Web サーバーをインストールする
  3. Fedora 23 に MariaDB および PHP/PHP-FPM を備えた Nginx をインストールする
  4. Nginx Web サーバーを Ubuntu 15.10 サーバー/デスクトップにインストールする
  5. Nginx Web サイトのディレクトリをパスワードで保護する

次に、このチュートリアルの残りの部分を続行する準備をしてください。

Nginx での名前ベースの仮想ホストの作成

すでにご存じかと思いますが、仮想ホストとは、単一のクラウド VPS または物理サーバーで Nginx によって提供される Web サイトです。ただし、Nginx のドキュメントでは、代わりに 「サーバー ブロック」 という用語が使用されていますが、これらは基本的に同じものであり、別の名前で呼ばれています。

仮想ホストをセットアップする最初のステップは、メイン構成ファイル (/etc/nginx/nginx.conf) または /etc/nginx/sites-available 内。

このディレクトリ (sites-available) 内の設定ファイルの名前は任意に設定できますが、ドメインの名前を使用することをお勧めします。さらに、 .conf 拡張子は、これらが構成ファイルであることを示します。

これらのサーバー ブロックは比較的複雑になる場合がありますが、基本的な形式では次の内容で構成されます。

/etc/nginx/sites-available/tecmintlovesnginx.com.conf:

server {  
    listen       80;  
    server_name  tecmintlovesnginx.com www.tecmintlovesnginx.com;
    access_log  /var/www/logs/tecmintlovesnginx.access.log;  
    error_log  /var/www/logs/tecmintlovesnginx.error.log error; 
        root   /var/www/tecmintlovesnginx.com/public_html;  
        index  index.html index.htm;  
}

/etc/nginx/sites-available/nginxmeanspower.com.conf:

server {  
    listen       80;  
    server_name  nginxmeanspower.com www.nginxmeanspower.com;
    access_log  /var/www/logs/nginxmeanspower.access.log;  
    error_log  /var/www/logs/nginxmeanspower.error.log error;
    root   /var/www/nginxmeanspower.com/public_html;  
    index  index.html index.htm;  
}

上記のブロックを使用して仮想ホストのセットアップを開始することも、/etc/nginx/sites-available/default (Debian) から基本的なスケルトンを含むファイルを作成することもできます。 >) または /etc/nginx/nginx.conf.default (CentOS)。

コピーしたら、権限と所有権を変更します。

chmod 660  /etc/nginx/sites-available/tecmintlovesnginx.com.conf
chmod 660  /etc/nginx/sites-available/nginxmeanspower.com.conf

Debian と派生製品

chgrp www-data  /etc/nginx/sites-available/tecmintlovesnginx.com.conf
chgrp www-data  /etc/nginx/sites-available/nginxmeanspower.com.conf

CentOS と RHEL

chgrp nginx  /etc/nginx/sites-available/tecmintlovesnginx.com.conf
chgrp nginx  /etc/nginx/sites-available/nginxmeanspower.com.conf

完了したら、混乱や競合を避けるために、サンプル ファイルを削除するか、別の名前に変更する必要があります。

ログ用のディレクトリ (/var/www/logs) を作成し、Nginx ユーザー (nginx または www-data) を指定する必要があることにも注意してください。 (CentOS または Debian を実行しているかどうかに応じて)読み取りおよび書き込み権限が必要になります。

mkdir /var/www/logs
chmod -R 660 /var/www/logs
chgrp <nginx user> /var/www/logs

ここで、サイト対応ディレクトリにこのファイルへのシンボリックリンクを作成して、仮想ホストを有効にする必要があります。

ln -s /etc/nginx/sites-available/tecmintlovesnginx.com.conf /etc/nginx/sites-enabled/tecmintlovesnginx.com.conf
ln -s /etc/nginx/sites-available/nginxmeanspower.com.conf /etc/nginx/sites-enabled/nginxmeanspower.com.conf

次に、各仮想ホストの /var/www//public_html 内に index.html という名前のサンプル HTML ファイルを作成します (を入力します)。必要に応じて次のコードを変更します。

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>Tecmint loves Nginx</title>
  </head>
  <body>
  <h1>Tecmint loves Nginx!</h1>
  </body>
</html>

最後に、Nginx 構成をテストし、Web サーバーを起動します。構成にエラーがある場合は、それらを修正するように求められます。

nginx -t && systemctl start nginx

そして、基本的な名前解決戦略として、ローカル マシンの /etc/hosts ファイルに次のエントリを追加します。

192.168.0.25 tecmintlovesnginx.com
192.168.0.25 nginxmeanspower.com

次に、Web ブラウザを起動して、上記の URL にアクセスします。

Nginx にさらに仮想ホストを追加するには、上記の手順を必要なだけ繰り返します。

Nginx の IP ベースの仮想ホスト

すべてのホストが同じ IP アドレスを通じてアクセスできる名前ベースの仮想ホストとは対照的に、IP ベースの仮想ホストには異なる IP:port が必要です。 それぞれを組み合わせます。

これにより、Web サーバーは、リクエストを受信した IP アドレスとポートに応じて異なるサイトを返すことができます。名前付きベースの仮想ホストは IP アドレスとポートを共有するという利点があるため、汎用 Web サーバーの標準であり、インストールされている Nginx のバージョンがサーバー名表示をサポートしていない限り、セットアップを選択する必要があります。 (SNI)。本当に古いバージョンであるか、–with-http_ssl_module コンパイル オプションを使用せずにコンパイルされたためです。

もし、

nginx -V

以下の強調表示されたオプションは返されません。

元のインストール方法に応じて、Nginx のバージョンを更新するか、再コンパイルする必要があります。 Nginx のコンパイルについては、以下の記事を参照してください。

  1. RHEL/CentOS 7 のソースから Nginx をインストールしてコンパイルする

これで問題はないと仮定して、IP ベースの仮想ホストのもう 1 つの前提条件は、個別の IP を個別のネットワーク インターフェイスに割り当てるか、仮想ホストを使用して利用できることであることに注意する必要があります。 IP (IP エイリアシングとも呼ばれます)。

Debian で IP エイリアシングを実行するには (eth0 を使用していると仮定します)、次のように /etc/network/interfaces を編集します。

Debian と派生製品

auto eth0:1
iface eth0:1 inet static
        address 192.168.0.25
        netmask 255.255.255.0
        network 192.168.0.0
        broadcast 192.168.0.255
        gateway 192.168.0.1
auto eth0:2
iface eth0:2 inet static
        address 192.168.0.26
        netmask 255.255.255.0
        network 192.168.0.0
        broadcast 192.168.0.255
        gateway 192.168.0.1

上の例では、eth0: eth0:1 (192.168.0.25) と eth0:2 (192.168.0.26) から 2 つの仮想 NIC を作成します。

CentOS と RHEL

CentOS で、/etc/sysconfig/network-scripts/ifcfg-enp0s3 の名前を ifcfg-enp0s3:1 に変更し、ifcfg-enp0s3:2 としてコピーを作成します。 に移動し、次の行をそれぞれ変更するだけです。

DEVICE="enp0s3:1"
IPADDR=192.168.0.25

そして

DEVICE="enp0s3:2"
IPADDR=192.168.0.26

完了したら、ネットワーク サービスを再起動します。

systemctl restart networking

次に、この記事で前に定義したサーバー ブロックに次の変更を加えます。

/etc/nginx/sites-available/tecmintlovesnginx.com.conf:

listen 192.168.0.25:80

/etc/nginx/sites-available/nginxmeanspower.com.conf:

listen 192.168.0.26:80

最後に、Nginx を再起動して変更を有効にします。

systemctl restart nginx

それに応じてローカルの /etc/hosts を更新することを忘れないでください。

192.168.0.25 tecmintlovesnginx.com
192.168.0.26 nginxmeanspower.com

したがって、ポート 80 上の 192.168.0.25192.168.0.26 に対して行われた各リクエストは、tecmintlovesnginx.com を返します。 nginxmeanspower.com それぞれ:

上の画像からわかるように、サーバー内の 2 つの異なる IP エイリアスを持つ唯一の NIC を使用する 2 つの IP ベースの仮想ホストが存在します。

概要

このチュートリアルでは、Nginx で名前ベースIP ベースの両方の仮想ホストを設定する方法を説明しました。おそらく最初のオプションを使用したいと思うでしょうが、必要に応じて他のオプションも存在することを知っておくことが重要です。このガイドで概説されている事実を考慮した上で、必ずこの決定を行ってください。

さらに、Nginx ドキュメントをブックマークしておくとよいでしょう。サーバー ブロックを作成し (これでわかります。今は Nginx 言語で話しています)、構成するときに頻繁に参照するのが有益です。この優れた Web サーバーの構成と調整に利用できるオプションのすべてが信じられないでしょう。

いつものように、この記事に関してご質問やコメントがございましたら、以下のフォームを使用して遠慮なくお問い合わせください。皆様からのご連絡を楽しみにしております。このガイドに関するフィードバックも大歓迎です。