Nginx は、高いパフォーマンスと低いリソース消費で知られる強力な Web サーバーです。もともと C10k 問題に対処するために設計された Nginx は、静的コンテンツの提供、負荷分散、リバース プロキシに優れています。安定性とセキュリティで知られる Debian と Nginx を組み合わせることで、堅牢で信頼性の高いサーバー環境が実現します。
Nginx の主な機能:
- ハイパフォーマンス: 複数の同時接続を効率的に処理します。
- リソース使用量が少ない: 最小限のメモリと CPU で実行するように最適化されています。
- 負荷分散: トラフィックを複数のサーバーに分散してパフォーマンスを向上させます。
- リバースプロキシ: クライアント要求をバックエンド サーバーにシームレスに転送します。
- 静的コンテンツの処理: 静的ファイルを迅速かつ効率的に提供します。
- セキュリティ機能: 暗号化された通信のための SSL/TLS をサポートします。
- 柔軟性: HTTP、HTTPS、SMTP、POP3、IMAP などのプロトコルをサポートします。
Nginx と Debian を組み合わせる利点:
- 安定性: Debian は安定性に定評があるため、サーバーの信頼性が維持されます。
- 安全: Debian の強力なセキュリティ対策により、Nginx サーバーは脆弱性から保護されます。
- 使いやすさ: Debian のパッケージ管理システムにより、Nginx のインストールと保守が簡素化されます。
- コミュニティサポート: Nginx と Debian には、広範なリソースとサポートを提供する強力なコミュニティがあります。
セットアップに移ると、Debian の安定性と Nginx の効率性が完璧に調和し、Web アプリケーションに最適な環境が構築されていることがわかります。Debian サーバーに Nginx をインストールして構成するために必要な手順を詳しく見ていきましょう。
Nginx インストール前のシステムの準備
Nginx をインストールする前に、システムが更新されていることを確認してください。これにより、インストール中に発生する可能性のある競合を防ぎ、互換性の問題やセキュリティの脆弱性のリスクを軽減できます。
システム パッケージを更新するには、次のコマンドを実行します。
sudo apt update && sudo apt upgrade
このコマンドは、利用可能なアップデートのリストを取得します( apt update
)を使用して、現在のソフトウェアパッケージを最新バージョンにアップグレードします( apt upgrade
).
NGINXのWebサーバー標準をインストールする
デフォルトでは、NGINX は Debian リポジトリで利用できます。これにより、インストール プロセスが簡単になります。
nginx をインストールするには、次のコマンドを実行します。
sudo apt install nginx
の apt install
このコマンドは、APT パッケージ処理ユーティリティ (Debian システムの一部) に NGINX パッケージをインストールするように指示します。
オプション: NGINXフルバージョンをインストールする
NGINXは nginx-full
標準バージョンにはない追加モジュールを備えたバージョンです。より多くの機能が必要な場合は、nginx-full バージョンをインストールしてください。
sudo apt install nginx-full
オプション: NGINX-Extrasバージョンをインストールする
さらに幅広い機能セットについては、 nginx-extras
バージョン。インストールするには:
sudo apt install nginx-extras
NGINX インストールの検証
インストール後、NGINX が正しく実行されていることを確認します。
次のようにして NGINX サービスのステータスを確認します。
systemctl status nginx
出力に「アクティブ (実行中)」と表示されている場合、NGINX は正常に動作しています。そうでない場合は、トラブルシューティングのためにエラーの詳細が出力されます。
NGINX が有効になっていない場合は、以下を使用します。
sudo systemctl enable nginx --now
Nginx 用の UFW ファイアウォールを構成する
UFW (Uncomplicated Firewall) は、iptables ファイアウォール ルールを管理するための使いやすいインターフェイスを提供します。Debian ではデフォルトでインストールされませんが、デフォルトのリポジトリから取得できます。サーバーにパブリック アクセスがある場合は、セキュリティのために UFW ルールを設定する必要があります。
UFWファイアウォールをインストールする
UFW がシステムにまだインストールされていない場合は、次のコマンドを実行してインストールできます。
sudo apt install ufw
UFWファイアウォールを有効にする
インストールが完了したら、次のコマンドを実行して UFW を有効にできます。
sudo ufw enable
UFW のデフォルト設定では、すべての着信接続がブロックされ、すべての発信接続が許可されます。つまり、不要なシステム アクセスはブロックされますが、システムが外部にアクセスできるようになります。
インストールされたアプリケーションの一覧表示
UFW は、特定のアプリケーションに対するルールのセットであるアプリケーション プロファイルを使用します。UFW プロファイルを持つインストール済みアプリケーションを表示するには、次のコマンドを実行します。
sudo ufw app list
NGINX の UFW ルールの設定
ニーズに応じて、NGINX 接続が HTTP (ポート 80)、HTTPS (ポート 443)、またはその両方を介して行われるように UFW を構成できます。
HTTP (ポート 80) のみ:
sudo ufw allow 'Nginx HTTP'
HTTPS (ポート 443) のみ:
sudo ufw allow 'Nginx HTTPS'
HTTP と HTTPS の両方:
sudo ufw allow 'Nginx Full'
ファイアウォールルールの検証
ルールが設定されていることを確認するには、アクティブなファイアウォール ルールを確認します。
sudo ufw status
NGINX 構成のテスト
UFW を設定したら、NGINX ランディング ページが表示されることを確認します。ブラウザで、サーバーの IP アドレスに移動します。
http://your_server_ip
または、ローカル設定の場合:
http://localhost
NGINX のデフォルト ページが表示され、設定が機能していると仮定します。これで、Debian 上の NGINX のファイアウォール設定は終了です。
NGINX サーバー ブロックを作成する
Apache の仮想ホストと同様に、NGINX サーバー ブロックを使用すると、1 つのサーバーから複数のドメインをホストできます。各ドメインには構成設定があります。このガイドでは、「example.com」を実際のドメイン名に置き換えます。
ドメインのディレクトリを作成する
ドメイン用のディレクトリを設定します。このディレクトリに Web サイトのファイルが保存されます。
sudo mkdir -p /var/www/example.com/
Nginxディレクトリに所有権を割り当てる
NGINX が通常使用する「www-data」ユーザーとグループにディレクトリの所有権を割り当てます。
sudo chown -R www-data:www-data /var/www/example.com/
Nginx テスト HTML ページを作成する
NGINX の設定を確認するには、ドメイン ディレクトリにテスト HTML ページを作成します。
sudo nano /var/www/example.com/index.html
次の HTML コードを追加します。
<html>
<head>
<title>Welcome to Example.com</title>
</head>
<body>
<h1>Success! The NGINX server block is working!</h1>
</body>
</html>
コードを nano エディターに貼り付けた後、CTRL+O を押して変更を保存し、CTRL+X を押してエディターを終了します。
テストページ用のNGINXサーバーブロックを作成する
ウェブサイトのサーバー ブロックを設定します。
sudo nano /etc/nginx/sites-available/example.com.conf
次の構成を追加します。
server {
listen 80;
listen [::]:80;
root /var/www/example.com/;
index index.html index.htm index.nginx-debian.html;
server_name example.com www.example.com;
location / {
try_files $uri $uri/ =404;
}
}
この設定は、NGINXにポート80で両方の着信接続をリッスンするように指示します。 example.com
そして www.example.com
必ず交換してください root
先ほど作成したディレクトリ パスをディレクティブに入力します。
シンボリックリンク経由でNGINXサーバーブロックを有効にする
sites-available ディレクトリから sites-enabled ディレクトリへのシンボリック リンクを作成して、サーバー ブロックを有効にします。
sudo ln -s /etc/nginx/sites-available/example.com.conf /etc/nginx/sites-enabled/
最終構成とテスト実行
最後に、デフォルトの NGINX 構成ファイルを編集し、テスト実行を実行して、すべてが期待どおりに動作することを確認します。
NGINX 設定ファイルの編集
開く nginx.conf
ファイル:
sudo nano /etc/nginx/nginx.conf
線を探す server_names_hash_bucket_size 64;
以内 http {}
ブロックしてコメントを解除します。
このディレクティブにより、NGINX は長いドメイン名や多数のサーバー名を処理できるようになります。そのために、より多くのメモリを割り当てます。ただし、必要以上にメモリを消費する可能性があるため、この値を高く設定しすぎないように注意してください。
変更を保存し、CTRL+O と CTRL+X を押してエディターを終了します。
NGINX 設定をテストする
NGINX を再起動する前に、設定構文が正しいことを確認することをお勧めします。テスト実行を開始するには、次のコマンドを実行します。
sudo nginx -t
設定が正しければ、次の出力が表示されます。
nginx: 設定ファイル /etc/nginx/nginx.conf の構文は正常です nginx: 設定ファイル /etc/nginx/nginx.conf のテストは成功しました
これらのメッセージは、NGINX 構成が正常に検証されたことを示しています。
サーバーブロックの確認
サーバー ブロックが適切に機能することを確認するには、Web ブラウザーでドメインを開きます。サーバー ブロックがアクティブであることを確認するテスト ページが表示されます。
追加のNginxコマンド
ウェブサーバーのファイルセキュリティを強化する
Web サーバー上のファイルとフォルダーのセキュリティは最も重要です。過度に許可されたアクセス権は避けてください。これらのコマンドを使用して、Web ルート内のすべてのファイルとディレクトリに適切な権限を設定します。
交換を忘れないでください /var/www/example.com/
ウェブルートパス:
sudo find /var/www/example.com/ -type d -exec chmod 755 "{}" \;
sudo find /var/www/example.com/ -type f -exec chmod 644 "{}" \;
これらのコマンドは、所有者に対してディレクトリの読み取りおよび実行権限とファイルの読み取り/書き込み権限を設定します。グループおよびその他のユーザーには読み取り専用アクセス権が与えられます。アプリケーションの要求に応じてこれらの権限を調整します。
Let's Encrypt の無料 SSL 証明書を使用した Nginx のセキュリティ
HTTPS プロトコルを使用すると、Web サーバーのセキュリティが確保されます。Let's Encrypt は無料の SSL 証明書を提供します。次のコマンドを使用して certbot パッケージをインストールします。
sudo apt install python3-certbot-nginx
次に、証明書の作成を開始します。
sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email you@example.com -d www.example.com
メールアドレスとドメイン名に置き換えてください。このコマンドは、必要なセキュリティ機能を備えた HTTPS を設定します。
自動証明書更新の設定
Let's Encrypt 証明書の有効期限は 90 日間です。Certbot スクリプトを使用して自動更新を設定します。プロセスをテストします。
sudo certbot renew --dry-run
成功した場合は、crontab に更新コマンドを追加します。
sudo crontab -e
毎日深夜に更新するには、次の行を追加します。
00 00 */1 * * /usr/sbin/certbot-auto renew
Nginx サーバー ログ
ウェブサーバーが適切に管理されているか、サーバーログを監視します。デフォルトでは、ログは次の場所に保存されます。 /var/log/nginx
次のようにリストします。
cd /var/log/nginx && ls -l
最も関連性の高いログファイルは access.log
そして error.log
ログをリアルタイムで監視するには、 tail -f
コマンドの後にログへのパスが続きます:
tail -f /var/log/nginx/access.log
Nginx を更新する
Nginxサーバーを更新する前に、現在の設定のバックアップを作成しておくことをお勧めします。メインの nginx.conf
ファイルを開くには、次のコマンドを使用します。
sudo cp /etc/nginx/nginx.conf /etc/nginx/nginx-backup.conf
Nginx の設定を大幅にカスタマイズした場合は、Nginx ディレクトリ全体をバックアップすることをお勧めします。
sudo cp -r /etc/nginx/ /etc/nginx-bkup
設定が安全にバックアップされたら、Nginx の更新に進むことができます。
sudo apt update
sudo apt upgrade
特に複雑な設定の場合は、定期的に構成をバックアップすることをお勧めします。
Nginxを削除する
サーバー上で Nginx が不要になった場合は、次の手順に従って削除できます。まず、Nginx サービスが停止していることを確認します。
sudo systemctl disable nginx --now
次に、Nginx パッケージを完全に削除します。
sudo apt remove nginx
Nginxの設定の残りがまだ残っているかもしれません /etc/nginx
ディレクトリ。これらを削除するには、次のコマンドを使用します。
sudo rm -R /etc/nginx/
これにより、すべてのカスタム構成ファイルが削除されることに注意してください。この手順を続行する前に、必要なものがすべてバックアップされていることを確認してください。
Nginx でログローテーションパラメータを設定する
Nginx にはデフォルトで毎日のログローテーション機能が含まれています。ただし、ニーズに応じてこれらの設定をカスタマイズできます。
ログローテーションの設定ファイルにアクセスする
ログローテーション設定を変更するには、設定ファイルにアクセスする必要があります。nano テキスト エディターを使用して設定ファイルを開く方法は次のとおりです。
sudo nano /etc/nginx/logrotate.d/nginx
ファイルを開くと、次のような内容が表示されます。主に fail2ban などの監視ツールを使用する場合は、ログの保持とローテーションのニーズに合わせてこのファイル内のディレクティブを調整します。
ログローテーション設定ファイルのサンプル
/var/log/nginx/*.log {
daily
missingok
rotate 14
compress
delaycompress
notifempty
create 0640 www-data adm
sharedscripts
prerotate
if [ -d /etc/logrotate.d/httpd-prerotate ]; then \
run-parts /etc/logrotate.d/httpd-prerotate; \
fi \
endscript
postrotate
invoke-rc.d nginx rotate >/dev/null 2>&1
endscript
}
主要な構成パラメータの理解
この構成では、システム管理者は通常、次の 2 つの主要な設定に重点を置きます。
- 毎日: この設定は、ログのローテーション頻度を設定します。デフォルトでは「毎日」に設定されていますが、「毎週」または「毎月」に変更できます。ただし、通常、毎日ローテーションするとログ管理が簡単になります。
- 回転14: この数値は、保持するログ ファイルの数をシステムに指示します。たとえば、「14」に設定すると、最新の 14 個のログが保持されます。1 週間分のログのみを保存する場合は、この数値を「7」に調整します。
Nginx では他の設定を変更できますが、変更は常に慎重に行ってください。影響を理解しないまま設定を変更すると、予期しない結果が生じる可能性があります。意図しない問題が発生しないように、ニーズに合わせてこれらの設定を変更してください。
ログ管理には万能なアプローチは存在しないことを覚えておいてください。変更を加える前に、必ず特定の環境と要件を評価してください。
終わりに
このガイドでは、Debian での Nginx の設定について、インストール、構成、基本的な最適化について説明しました。Nginx の効率性と Debian の安定性を組み合わせることで、Web サーバーの強固な基盤を構築できます。サーバーを最新の状態に保ち、機能強化のために追加の Nginx モジュールを調べることを忘れないでください。問題が発生した場合は、Debian と Nginx の強力なコミュニティが常に優れたリソースとなります。ご協力ありがとうございました。ホスティングをお楽しみください。