導入
Nginxは世界で最も人気のあるウェブサーバーの1つであり、インターネット上で最大規模かつ最もアクセス数の多いウェブサイトのホスティングを担っています。多くの場合、Apacheよりもリソース消費が少なく、ウェブサーバーやリバースプロキシとして使用できます。.
このガイドでは、Ubuntu 18.04 サーバーに Nginx をインストールする方法と、重要な Nginx ファイルとディレクトリについて説明します。.
前提条件
このガイドを始める前に、サーバー上でsudo権限を持つ通常の非rootユーザーと基本的なファイアウォールを設定する必要があります。通常のユーザーアカウントの設定方法については、Ubuntu 18.04向けの基本的なサーバー設定ガイドをご覧ください。.
アカウントが利用可能になったら、非ルート ユーザーとしてログインして開始します。.
ステップ1 – Nginxをインストールする
Nginx はデフォルトの Ubuntu リポジトリで利用できるため、apt パッケージ システムを使用してこれらのリポジトリからインストールできます。.
このセッションではaptパッケージングシステムを使うのは初めてかもしれませんので、ローカルパッケージディレクトリを更新して最新のパッケージリストにアクセスできるようにしてください。その後、nginxをインストールできます。
sudo apt update
sudo apt install nginx手順を承認すると、apt は Nginx と必要な依存関係をサーバーにインストールします。.
ステップ2 – ファイアウォールを構成する
Nginx をテストする前に、ファイアウォールソフトウェアを設定してサービスへのアクセスを許可する必要があります。インストール後、Nginx は ufw にサービスとして登録されるため、Nginx へのアクセスを簡単に許可できます。.
次のように入力して、ufw が操作できるアプリケーション構成を一覧表示します。
sudo ufw app list出力はアプリケーション プロファイルのリストになります。
Output
Available applications:
Nginx Full
Nginx HTTP
Nginx HTTPS
OpenSSHこのリストには、Nginx で使用できる 3 つのプロファイルが表示されます。
- Nginx Full: このプロファイルは、ポート 80 (通常の暗号化されていない Web トラフィック) とポート 443 (TLS/SSL 暗号化トラフィック) の両方を開きます。.
- Nginx HTTP: このプロファイルはポート 80 (通常の暗号化されていない Web トラフィック) のみを開きます。
- Nginx HTTPS: このプロファイルはポート443(TLS/SSL暗号化トラフィック)のみを開きます
設定したトラフィックを許可しつつ、最も制限の厳しいプロファイルを有効にすることをお勧めします。このガイドではサーバーのSSL設定をまだ行っていないため、ポート80のトラフィックのみを許可する必要があります。.
次のように入力するとこれを有効にできます。
sudo ufw allow 'Nginx HTTP'次に、変更を確認します。
sudo ufw status出力には許可された HTTP トラフィックのリストが表示されます。
Output
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
Nginx HTTP ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Nginx HTTP (v6) ALLOW Anywhere (v6)適切なファイアウォール ルールを追加したので、Web サーバーが実行中であり、コンテンツを適切に提供できることを確認できます。.
ステップ3 – ウェブサーバーを確認する
インストールプロセスの最後に、Ubuntu 18.04はNginxを起動します。Webサーバーはすでに起動しているはずです。.
systemd init でサービスが実行されていることを確認します。
systemctl status nginxOutput
● nginx.service - A high performance web server and a reverse proxy server
Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: en
Active: active (running) since Fri 2021-10-01 21:36:15 UTC; 35s ago
Docs: man:nginx(8)
Main PID: 9039 (nginx)
Tasks: 2 (limit: 1151)
CGroup: /system.slice/nginx.service
├─9039 nginx: master process /usr/sbin/nginx -g daemon on; master_pro
└─9041 nginx: worker processこの出力は、サービスが正常に開始されたことを示しています。ただし、テストする最良の方法は、実際にNginxからページをリクエストすることです。.
サーバーのIPアドレスにアクセスすることで、Nginxのデフォルトのランディングページにアクセスし、ソフトウェアが正常に動作していることを確認できます。サーバーのIPアドレスがわからない場合は、いくつかの方法で取得できます。.
サーバーのコマンド ラインに次のように入力してみてください。
ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'数行のコードが表示されます。各行をWebブラウザで試して、動作するかどうかを確認してください。.
別の方法としては、次のコマンドを実行すると、インターネット上の別の場所から識別されるパブリック IP アドレスが作成されます。
curl -4 icanhazip.comサーバーの IP アドレスを取得したら、ブラウザのアドレス バーに入力します。
http://your_server_ipデフォルトの Nginx ランディング ページが表示されます。
このページには、サーバーが適切に実行されていることを確認するための Nginx が付属しています。.
ステップ4 – Nginxプロセスの管理
Web サーバーがセットアップされたので、基本的な管理コマンドをいくつか確認してみましょう。.
Web サーバーを停止するには、次のように入力します。
sudo systemctl stop nginxWeb サーバーが停止した場合に起動するには、次のように入力します。
sudo systemctl start nginxサービスを停止してから再起動するには、次のように入力します。
sudo systemctl restart nginx設定変更だけであれば、再起動ではなく接続を削除せずにNginxをリロードするだけで済む場合が多いです。これを行うには、次のコマンドを入力します。
sudo systemctl reload nginxデフォルトでは、Nginxはサーバーの起動時に自動的に起動するように設定されています。この動作を望まない場合は、次のコマンドを入力して無効にすることができます。
sudo systemctl disable nginx
起動時にサービスが再度開始されるようにするには、次のように入力します。
sudo systemctl enable nginx
これで、サーバーの起動時に Nginx が自動的に再起動するはずです。.
ステップ5 – サーバーブロックを設定する(推奨)
Nginxウェブサーバーを使用する場合、サーバーブロック(Apacheの仮想ホストに似ています)を使用して設定の詳細をカプセル化し、単一のサーバーで複数のドメインをホストできます。ここでは your_domain というドメインを設定しますが、これはご自身のドメイン名に置き換えてください。DigitalOceanでのドメイン名設定の詳細については、DigitalOcean DNSの概要をご覧ください。.
Ubuntu 18.04のNginxでは、デフォルトでサーバーブロックが有効になっており、/var/www/htmlディレクトリ外のドキュメントを提供するように設定されています。これは単一のサイトでは問題なく動作しますが、複数のサイトをホストしている場合は煩雑になる可能性があります。/var/www/htmlを変更する代わりに、your_domainサイト用に/var/wwwにディレクトリ構造を作成し、クライアントのリクエストに一致しない場合に備えて、/var/www/htmlをデフォルトのディレクトリとして残しておきましょう。その他のサイト
次のように -p フラグを使用して your_domain のディレクトリを作成し、必要な親ディレクトリを作成します。
sudo mkdir -p /var/www/your_domain/html
次に、$USER 環境変数を使用してディレクトリの所有権を割り当てます。
sudo chown -R $USER:$USER /var/www/your_domain/html
umask 値を変更していない場合は、Web ルート権限は正しいはずですが、次のように入力して確認できます。
sudo chmod -R 755 /var/www/your_domain
次に、nano またはお気に入りのエディターを使用してサンプルの index.html ページを作成します。
nano /var/www/your_domain/html/index.html
内部に次の HTML サンプルを追加します。
<html>
<head>
<title>Welcome to your_domain!</title>
</head>
<body>
<h1>Success! The your_domain server block is working!</h1>
</body>
</html>完了したらファイルを保存して閉じます。nanoを使用している場合は、Ctrl + X、Y、Enterの順に押すことで終了できます。.
Nginxがこのコンテンツを提供するには、正しい指示を含むサーバーブロックを作成する必要があります。デフォルトの設定ファイルを直接変更するのではなく、/etc/nginx/sites-available/your_domainに新しいファイルを作成してください。
sudo nano /etc/nginx/sites-available/your_domain
次の構成ブロックを追加します。これはデフォルトと似ていますが、新しいディレクトリとドメイン名に合わせて更新されています。
server {
listen 80;
listen [::]:80;
root /var/www/your_domain/html;
index index.html index.htm index.nginx-debian.html;
server_name your_domain.com www.your_domain;
location / {
try_files $uri $uri/ =404;
}
}ルート設定を新しいディレクトリに、server_name をドメイン名に更新したことに注意してください。完了したら、ファイルを保存して閉じてください。.
次に、ファイルから sites-enabled ディレクトリへのリンクを作成してファイルを有効にします。Nginx は起動時にこのディレクトリから読み取ります。
sudo ln -s /etc/nginx/sites-available/your_domain /etc/nginx/sites-enabled/
これで、2 つのサーバー ブロックが有効になり、listen および server_name ディレクティブに基づいてリクエストに応答するように構成されました (Nginx がこれらのディレクティブを処理する方法の詳細については、ここを参照してください)。
- your_domain: your_domain および www.your_domain のリクエストに応答します。.
- デフォルト: 他の 2 つのブロックと一致しないポート 80 上のすべての要求に応答します。.
サーバー名の追加によって発生する可能性のあるハッシュバケットメモリの問題を回避するには、/etc/nginx/nginx.confファイルに単一の値を設定する必要があります。ファイルを開きます。
sudo nano /etc/nginx/nginx.conf
server_names_hash_bucket_size コマンドを見つけて、# シンボルを削除し、行のコメントを解除します。
...
http {
...
server_names_hash_bucket_size 64;
...
}
...完了したらファイルを保存して閉じます。.
次に、Nginx ファイルに構文エラーがないことを確認するためにテストします。
sudo nginx -t
問題がなければ、変更を有効にするために Nginx を再起動します。
sudo systemctl restart nginx
Nginx がドメイン名を配信するようになりました。http://your_domain にアクセスしてテストすると、次のような画面が表示されます。
ステップ6 – 重要なNginxファイルとディレクトリを理解する
Nginx サービス自体の管理方法がわかったので、次に、いくつかの重要なディレクトリとファイルについて理解するために数分かかる必要があります。.
コンテンツ
- /var/www/html: 実際のウェブコンテンツは、デフォルトでは先ほど見たNginxのデフォルトページのみで構成され、/var/www/htmlディレクトリの外部で提供されます。これはNginxの設定ファイルを編集することで変更できます。.
サーバー構成
- /etc/nginx: Nginx 設定ディレクトリ。すべての Nginx 設定ファイルはここに保存されます。.
- /etc/nginx/nginx.conf: Nginxのメイン設定ファイル。これを編集することで、Nginxのグローバル設定を変更できます。.
- /etc/nginx/sites-available/: 各サイトのサーバーブロックを保存できるディレクトリです。Nginxは、このディレクトリ内の設定ファイルがsites-enabledディレクトリにリンクされていない限り使用しません。通常、すべてのサーバーブロック設定はこのディレクトリで行われ、その後、別のディレクトリにリンクすることで有効化されます。.
- /etc/nginx/sites-enabled/: 各サイトで有効化されたサーバーブロックが保存されるディレクトリ。通常、これらのブロックは既存のsitesディレクトリ内の設定ファイルにリンクすることで作成されます。.
- /etc/nginx/snippets: このディレクトリには、Nginx設定の他の場所に組み込むことができる設定スニペットが含まれています。繰り返し使用される可能性のある設定セクションは、スニペットへの再変換に適しています。.
サーバーレポート
- /var/log/nginx/access.log: Nginx が別途設定されていない限り、Web サーバーへのすべてのリクエストはこのログ ファイルに記録されます。.
- /var/log/nginx/error.log: すべての Nginx エラーがこのログに記録されます。.
結果
Web サーバーがインストールされたので、より豊かなエクスペリエンスを実現するために使用するコンテンツやテクノロジの種類に関して、さまざまなオプションが利用できるようになります。.











