Nginxは、軽量で高性能なウェブサーバーソフトウェアとして、ウェブサイトのホスティングやリバースプロキシ、ロードバランシングなど多岐にわたる用途で使用されています。この記事では、Nginxのインストールから設定、運用方法までを詳しく解説します。
1. Nginxのインストール
まず最初に、Nginxをインストールします。多くのLinuxディストリビューションでは、Nginxは公式リポジトリに含まれているため、パッケージマネージャを利用して簡単にインストールできます。ここでは、Ubuntuを例にインストール手順を説明します。

1.1 パッケージの更新
インストールを開始する前に、パッケージリストを最新の状態に更新します。ターミナルで次のコマンドを実行します。
bashsudo apt update
1.2 Nginxのインストール
次に、Nginxをインストールします。以下のコマンドでインストールできます。
bashsudo apt install nginx
インストールが完了したら、Nginxが自動的に起動します。
1.3 インストールの確認
インストールが成功したかどうかを確認するため、ブラウザでサーバーのIPアドレスにアクセスします。例えば、http://your_server_ip
にアクセスすると、Nginxのデフォルトのウェルカムページが表示されます。
また、以下のコマンドでNginxが正しく動作しているかを確認できます。
bashsudo systemctl status nginx
2. Nginxの基本設定
Nginxをインストールしたら、次は設定ファイルの編集に進みます。Nginxの設定ファイルは/etc/nginx/nginx.conf
にあり、サーバーブロックは/etc/nginx/sites-available/
ディレクトリに格納されています。
2.1 サーバーブロックの設定
サーバーブロック(仮想ホスト)は、異なるドメイン名やIPアドレスで異なるコンテンツを提供するために使用されます。/etc/nginx/sites-available/
ディレクトリ内に新しい設定ファイルを作成します。
例えば、example.com
というウェブサイトを設定する場合、次のように新しい設定ファイルを作成します。
bashsudo nano /etc/nginx/sites-available/example.com
設定ファイルには以下の内容を記述します。
nginxserver {
listen 80;
server_name example.com www.example.com;
root /var/www/example.com;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
この設定ファイルでは、example.com
というドメイン名に対して、/var/www/example.com
ディレクトリ内のコンテンツを提供する設定を行っています。
2.2 サーバーブロックの有効化
次に、この設定を有効にするために、sites-enabled
ディレクトリにシンボリックリンクを作成します。
bashsudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
2.3 設定ファイルのテスト
設定ファイルにエラーがないかを確認するため、次のコマンドでNginxの設定をテストします。
bashsudo nginx -t
問題がなければ、Nginxを再起動して設定を反映させます。
bashsudo systemctl restart nginx
3. Nginxのセキュリティ設定
ウェブサーバーをインターネットに公開する場合、セキュリティ対策は重要です。以下に代表的なセキュリティ設定をいくつか紹介します。
3.1 HTTPヘッダーの強化
Nginxの設定で、HTTPヘッダーを強化することで、XSS攻撃やクリックジャッキング攻撃からサイトを守ることができます。設定ファイルに以下の内容を追加します。
nginxadd_header X-Frame-Options "SAMEORIGIN";
add_header X-XSS-Protection "1; mode=block";
add_header X-Content-Type-Options "nosniff";
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains";
これにより、ブラウザがコンテンツを正しく解釈するようになります。
3.2 SSL/TLSの設定
ウェブサイトをHTTPS化するために、SSL/TLS証明書を設定します。無料の証明書を取得できるLet’s Encryptを使用する方法が一般的です。次に、certbot
を使用してSSL証明書を設定する手順を紹介します。
3.2.1 Certbotのインストール
bashsudo apt install certbot python3-certbot-nginx
3.2.2 SSL証明書の取得
次に、Certbotを使用してSSL証明書を取得します。
bashsudo certbot --nginx -d example.com -d www.example.com
証明書の取得が完了したら、Nginxが自動的にHTTPS設定を追加します。証明書が正しく設定されているかを確認するため、ブラウザでhttps://example.com
にアクセスします。
3.3 HTTP/2の有効化
NginxではHTTP/2を簡単に有効化できます。nginx.conf
やサーバーブロック設定で、listen
ディレクティブにhttp2
オプションを追加します。
nginxserver {
listen 443 ssl http2;
server_name example.com www.example.com;
# SSL設定...
}
これにより、HTTP/2が有効になり、パフォーマンスが向上します。
4. Nginxのログ設定
Nginxはアクセスログとエラーログを記録します。デフォルトでは、/var/log/nginx/access.log
と/var/log/nginx/error.log
に記録されます。ログを解析することで、サイトのパフォーマンスやトラフィックの問題を監視することができます。
4.1 ログのフォーマット変更
デフォルトのログフォーマットを変更するには、nginx.conf
のhttp
ブロック内でlog_format
を設定します。
nginxlog_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
これにより、ログに追加情報が記録されるようになります。
4.2 ログローテーション
アクセスログやエラーログは時間とともに膨大なサイズになることがあります。これを防ぐために、ログローテーションを設定します。logrotate
を使ってNginxのログを定期的にローテートできます。
bashsudo nano /etc/logrotate.d/nginx
設定ファイルに以下の内容を追加します。
bash/var/log/nginx/*.log {
daily
rotate 14
compress
delaycompress
missingok
notifempty
create 640 www-data adm
}
これにより、Nginxのログファイルが毎日ローテートされ、圧縮されます。
5. Nginxのパフォーマンス最適化
Nginxは非常に軽量で効率的ですが、大規模なトラフィックを扱う場合は、さらにパフォーマンスを最適化することができます。
5.1 キャッシュの設定
Nginxで静的コンテンツをキャッシュすることで、パフォーマンスを向上させることができます。以下の設定をserver
ブロック内に追加します。
nginxlocation /static/ {
expires 30d;
add_header Cache-Control "public";
}
これにより、/static/
ディレクトリ内のコンテンツは30日間キャッシュされます。
5.2 接続の制限
Nginxで大量の接続を効率的に処理するために、接続数を制限することができます。例えば、worker_connections
の値を調整して、同時接続数を制限します。
nginxworker_connections 1024;
6. Nginxの管理とメンテナンス
Nginxはsystemctl
コマンドを使用して管理できます。以下のコマンドでNginxを操作できます。
- Nginxの起動:
sudo systemctl start nginx
- Nginxの停止:
sudo systemctl stop nginx
- Nginxの再起動:
sudo systemctl restart nginx
- Nginxの再読み込み:
sudo systemctl reload nginx
- Nginxのステータス確認:
sudo systemctl status nginx
まとめ
この記事では、Nginxのインストールから設定、運用までの基本的な手順を詳しく説明しました。Nginxは非常に高性能で柔軟なウェブサーバーであり、適切な設定と最適化を行うことで、大規模なトラフィックにも対応できる強力なインフラを構築できます。