web100tips’s blog

webエンジニアが知っておくべきこと100を1日1投稿します

Nginxの基本設定完全ガイド|仮想ホスト・SSL・リバースプロキシまで1時間でマスター

 

Nginxの基本設定完全ガイド|初心者から実務対応まで

このページでは、Nginx(エンジンエックス)の基本的な設定方法について、Webエンジニアが押さえておくべきポイントを1時間程度で学べるボリュームで網羅的に解説します。

1. Nginxとは?

  • 軽量・高速なHTTPサーバー / リバースプロキシ
  • 静的ファイル配信、ロードバランシング、SSL終端などに強い
  • Apacheに代わるモダンなWebサーバー

2. インストール方法(Ubuntu/Debian

sudo apt update
sudo apt install nginx

3. ディレクトリ構成(/etc/nginx 以下)

  • /etc/nginx/nginx.conf:メイン設定ファイル
  • /etc/nginx/sites-available/:仮想ホスト設定を保存
  • /etc/nginx/sites-enabled/:有効化された仮想ホストのシンボリックリンク
  • /var/www/html/:デフォルトのドキュメントルート

4. 基本的な設定項目

serverブロック

server {
  listen 80;
  server_name example.com;

  root /var/www/html;
  index index.html index.htm;

  location / {
    try_files $uri $uri/ =404;
  }
}

重要ディレクティブの説明

  • listen:ポート番号の指定
  • server_name:バーチャルホストのドメイン
  • root:ドキュメントルート
  • index:デフォルトのファイル
  • location:ルーティングルール

5. 設定ファイルのテストと再読み込み

# 構文チェック
sudo nginx -t

# 設定を再読み込み
sudo systemctl reload nginx

6. リバースプロキシの設定

location /api/ {
  proxy_pass http://localhost:3000/;
  proxy_set_header Host $host;
  proxy_set_header X-Real-IP $remote_addr;
}

7. HTTPS対応(Let's Encrypt + SSL

Certbotと連携してSSL証明書を自動取得・設定:

sudo certbot --nginx -d example.com

8. HTTPからHTTPSへリダイレクト

server {
  listen 80;
  server_name example.com;
  return 301 https://$host$request_uri;
}

9. ログ設定

  • アクセスログ/var/log/nginx/access.log
  • エラーログ:/var/log/nginx/error.log

10. セキュリティ・パフォーマンス強化

  • Gzip圧縮の有効化
  • HTTPヘッダ制御(X-Frame-Optionsなど)
  • キャッシュ制御
  • rate limiting(アクセス制限)

11. systemdによるNginx管理

sudo systemctl start nginx
sudo systemctl enable nginx
sudo systemctl status nginx

12. トラブルシューティング

  • ポート80/443が開いているか確認(ufw allowなど)
  • 設定ミス → nginx -t で構文チェック
  • 権限エラー → ファイルパーミッションと所有者を確認

13. まとめ

  • Nginxは軽量で高機能なWebサーバー
  • 仮想ホスト、リバースプロキシ、HTTPS対応までシンプルに設定可能
  • セキュリティやパフォーマンスのチューニングも柔軟にできる

14. 参考リンク