手当たり次第に書くんだ

飽きっぽいのは本能

Ubuntu 26.04 Nginx の基本設定 – 静的配信とリバースプロキシの土台を作る

関連する記事

Ubuntu 26.04 で Web サーバーを構成する場合、Nginx は静的ファイル配信、リバースプロキシ、TLS 終端、PHP-FPM への FastCGI 連携などでよく使われます。

この記事では、Ubuntu 26.04 に Nginx を導入し、サービス、設定ファイル、server block、ログ、リバースプロキシ、PHP-FPM 連携の入口を確認する基本手順をまとめます。

この記事で扱うこと
  • Nginx の役割と Apache / PHP-FPM との分担
  • パッケージ導入、サービス起動、設定検証
  • server block の基本形と静的ファイル配信
  • リバースプロキシと PHP-FPM 連携の入口
  • ログ確認と公開前の確認ポイント
対象 OSUbuntu 26.04 Server
Web サーバーNginx
主な設定先/etc/nginx/sites-available//etc/nginx/sites-enabled/
設定検証sudo nginx -t
ログ/var/log/nginx/access.log/var/log/nginx/error.log
参考書籍
参考書籍
NGINX Cookbook
Nginx の設定、リバースプロキシ、TLS、運用パターンを実例で確認したい場合の参考書籍です。価格や在庫はリンク先で確認してください。
Amazon で見る
このリンクは Amazon アソシエイトリンクです。

Nginx の役割を確認する

Nginx は軽量な Web サーバーとして静的ファイルを配信できるほか、バックエンドのアプリケーションサーバーに HTTP リクエストを中継するリバースプロキシとしても使えます。PHP を直接実行するのではなく、PHP-FPM に処理を渡す点も重要です。

  • 静的ファイルを配信する
  • バックエンドへリバースプロキシする
  • PHP-FPM へ FastCGI で処理を渡す
  • TLS 終端や HTTP/2 を担当する

Nginx をインストールする

APT で Nginx を導入し、サービスを有効化して起動します。Ubuntu 標準パッケージを使う場合は、まずこの流れで十分です。

コマンド
sudo apt update
sudo apt install -y nginx
sudo systemctl enable --now nginx.service
systemctl status nginx.service --no-pager

バージョンとビルドオプションを確認する

導入後は Nginx のバージョンとビルドオプションを確認します。利用できるモジュールや TLS 関連機能は、ビルドオプションに依存します。

コマンド
nginx -v
nginx -V

設定ファイルの構成を確認する

Ubuntu の Nginx では、サイトごとの設定を /etc/nginx/sites-available/ に置き、/etc/nginx/sites-enabled/ からシンボリックリンクで有効化する構成が一般的です。

コマンド
ls -l /etc/nginx/
ls -l /etc/nginx/sites-available/
ls -l /etc/nginx/sites-enabled/
sudo nginx -t

最小の server block を作成する

静的ファイルを配信する最小の server block を作成します。ここでは例として www.example.com を使います。実際の環境では利用する FQDN に置き換えます。

コマンド
sudo install -d -o www-data -g www-data -m 0755 /var/www/www.example.com/html
echo 'Nginx on Ubuntu 26.04' | sudo tee /var/www/www.example.com/html/index.html >/dev/null
sudo tee /etc/nginx/sites-available/www.example.com >/dev/null <<'EOF'
server {
  listen 80;
  listen [::]:80;
  server_name www.example.com;
  root /var/www/www.example.com/html;
  index index.html;
  access_log /var/log/nginx/www.example.com.access.log;
  error_log /var/log/nginx/www.example.com.error.log;
  location / {
  try_files $uri $uri/ =404;
  }
}
EOF
sudo ln -sfn /etc/nginx/sites-available/www.example.com /etc/nginx/sites-enabled/www.example.com
sudo nginx -t
sudo systemctl reload nginx.service

HTTP 応答を確認する

Nginx を reload したら、ローカルまたは外部から HTTP 応答を確認します。名前解決がまだない場合は、検証端末の hosts や curl --resolve を使って切り分けます。

コマンド
curl -I http://www.example.com/
curl --resolve www.example.com:80:192.0.2.10 -I http://www.example.com/

リバースプロキシの基本形を確認する

Nginx をアプリケーションの前段に置く場合は、proxy_pass でバックエンドに中継します。バックエンドには Node.js、Python、Java、別の Web サーバーなどを配置できます。

コマンド
sudo tee /etc/nginx/sites-available/app.example.com >/dev/null <<'EOF'
server {
  listen 80;
  listen [::]:80;
  server_name app.example.com;
  access_log /var/log/nginx/app.example.com.access.log;
  error_log /var/log/nginx/app.example.com.error.log;
  location / {
  proxy_pass http://127.0.0.1:3000;
  proxy_http_version 1.1;
  proxy_set_header Host $host;
  proxy_set_header X-Real-IP $remote_addr;
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  proxy_set_header X-Forwarded-Proto $scheme;
  }
}
EOF
sudo ln -sfn /etc/nginx/sites-available/app.example.com /etc/nginx/sites-enabled/app.example.com
sudo nginx -t
sudo systemctl reload nginx.service

PHP-FPM へ渡す入口を確認する

PHP アプリケーションを Nginx で公開する場合、PHP ファイルへのリクエストを PHP-FPM の Unix socket に渡します。socket パスは実際の PHP バージョンに合わせます。

コマンド
sudo tee /etc/nginx/sites-available/php.example.com >/dev/null <<'EOF'
server {
  listen 80;
  listen [::]:80;
  server_name php.example.com;
  root /var/www/php.example.com/html;
  index index.php index.html;
  location / {
  try_files $uri $uri/ =404;
  }
  location ~ \.php$ {
  include snippets/fastcgi-php.conf;
  fastcgi_pass unix:/run/php/php8.5-fpm.sock;
  }
}
EOF
sudo ln -sfn /etc/nginx/sites-available/php.example.com /etc/nginx/sites-enabled/php.example.com
sudo nginx -t
sudo systemctl reload nginx.service

PHP-FPM 側では /run/php/php8.5-fpm.sock が存在し、Nginx の実行ユーザーが接続できることを確認します。

ログを確認する

Nginx の切り分けでは、サービス状態、設定検証、access log、error log をセットで確認します。502 の場合は、バックエンドや PHP-FPM 側のログも合わせて確認します。

コマンド
systemctl status nginx.service --no-pager
sudo nginx -t
sudo tail -n 100 /var/log/nginx/access.log
sudo tail -n 100 /var/log/nginx/error.log
journalctl -u nginx.service --no-pager -n 100

公開前の確認ポイント

  • sudo nginx -t が成功する
  • 不要な default site を公開していない
  • server_name が実際の FQDN と一致している
  • access log と error log の出力先を確認している
  • リバースプロキシ先や PHP-FPM socket が実在する
  • TLS を使う場合は証明書と HTTP から HTTPS への誘導を別途確認する

まとめ

Ubuntu 26.04 の Nginx 基本設定では、パッケージ導入、サービス起動、設定ファイル構成、server block、設定検証、ログ確認を順番に押さえます。

静的ファイル配信だけでなく、リバースプロキシや PHP-FPM 連携の入口を理解しておくと、Nextcloud、WordPress、独自アプリケーションなどを載せる前の設計がしやすくなります。

関連する記事
Ubuntu 26.04 Nginx の基本設定 – 静的配信とリバースプロキシの土台を作る

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

トップへ戻る