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


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

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

Apacheに最も慣れている私たちにとって、Nginxの学習曲線はやや急勾配である可能性があります(少なくとも私の場合はそうです)が、いくつかのサイトをセットアップしてトラフィックとリソースの使用統計を確認し始めると、確かに効果があります。

この記事では、Ubuntu 15.04とそのスピンオフ以降、Nginxを使用してCentOS/RHEL7サーバーとDebian8およびその派生物で名前ベースおよびIPベースの仮想ホスティングをセットアップする方法について説明します。

  1. Operating System: Debian 8 Jessie server [IP 192.168.0.25]
  2. Gateway: Router [IP 192.168.0.1]
  3. Web Server: Nginx 1.6.2-5
  4. Dummy Domains: www.tecmintlovesnginx.com and www.nginxmeanspower.com.

NginxWebサーバーのインストール

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

  1. Install and Compile Nginx from Sources in RHEL/CentOS 7
  2. Install Nginx Web Server on Debian 8
  3. Install Nginx with MariaDB and PHP/PHP-FPM on Fedora 23
  4. Install Nginx Web Server on Ubuntu 15.10 Server/Desktop
  5. Password Protect Nginx Website Directories

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

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

ご存じのとおり、仮想ホストは、単一のクラウドVPSまたは物理サーバーでNginxによって提供されるWebサイトです。ただし、Nginxのドキュメントには、 serverという用語があります。

仮想ホストを設定する最初のステップは、メイン構成ファイル(/etc/nginx/nginx.conf)または/ etc内に1つ以上のサーバーブロックを作成することです(この場合、ダミードメインごとに1つ作成します)。/nginx/sites-利用可能です。

このディレクトリ(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
# chgrp www-data  /etc/nginx/sites-available/tecmintlovesnginx.com.conf
# chgrp www-data  /etc/nginx/sites-available/nginxmeanspower.com.conf
# chgrp nginx  /etc/nginx/sites-available/tecmintlovesnginx.com.conf
# chgrp nginx  /etc/nginx/sites-available/nginxmeanspower.com.conf

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

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

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

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

# 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. Install and Compile Nginx from Sources in RHEL/CentOS 7

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

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

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から2つの仮想NICを作成します:eth0:1 (192.168.0.25)と eth0:2 (192.168.0.26)。

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.25および192.168.0.26に対して行われた各要求は、それぞれtecmintlovesnginx.comおよびnginxmeanspower.comを返します。

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

まとめ

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

さらに、サーバーブロックを作成し(現在はNginx言語で話している)、それらを構成するときに頻繁に参照する価値があり、十分に参照できるため、Nginxドキュメントをブックマークすることをお勧めします。この優れたWebサーバーを構成および調整するために利用できるすべてのオプションを信じることはできません。

いつものように、この記事について質問やコメントがある場合は、下のフォームを使用して遠慮なくご連絡ください。ご連絡をお待ちしております。このガイドに関するフィードバックをお待ちしております。

全著作権所有。 © Linux-Console.net • 2019-2022