ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
Nginx とは
Nginx(エンジンエックス)はロシアのエンジニア Igor Sysoev が 2004 年に公開した、オープンソースの Web サーバソフトウェアです。Apache と並ぶ世界最大級のシェアを持ち、特に高トラフィックサイトで採用されています。

Apache との違い(アーキテクチャ)
| 項目 | Apache (prefork/worker) | Nginx |
|---|---|---|
| 処理モデル | プロセス / スレッド per 接続 | ★ イベント駆動(少数 worker で多接続) |
| 同時接続 1 万への耐性 | メモリ消費が大きい | ★ 軽い |
| 動的コンテンツ | mod_php で同プロセス内処理 | FastCGI で PHP-FPM に転送 |
| .htaccess | ★ 対応 | 非対応(パフォーマンス重視) |
| 設定の柔軟性 | モジュール豊富 | シンプル&高速 |
| リバースプロキシ | mod_proxy 必要 | ★ 標準機能で得意 |
| 主用途 | 共有ホスティング / 旧来 PHP サイト | ★ 高負荷サイト / API / リバースプロキシ |
主な機能
- 静的ファイル配信:sendfile / mmap で高速
- リバースプロキシ:バックエンド (Node.js / Python / PHP-FPM / Java) に転送
- ロードバランサ:upstream で複数バックエンドに分散(round-robin / least_conn / ip_hash)
- HTTPS / SSL 終端:Let's Encrypt で自動更新が定番
- HTTP/2 / HTTP/3 (QUIC):最新プロトコル対応
- キャッシュ:proxy_cache / fastcgi_cache でアプリレスポンスをキャッシュ
- レート制限:limit_req / limit_conn で DDoS / Brute Force 防御
- WebSocket:proxy_set_header Upgrade で透過プロキシ
インストール (Ubuntu / Debian)
# 公式リポジトリ
sudo apt update
sudo apt install -y nginx
# 起動 / 自動起動
sudo systemctl start nginx
sudo systemctl enable nginx
# 状態確認
sudo systemctl status nginx
curl -I http://localhost/
# バージョン確認
nginx -v
# nginx version: nginx/1.24.0
# 設定ファイル文法チェック
sudo nginx -t
# nginx: configuration file /etc/nginx/nginx.conf test is successful
# リロード(設定反映、無停止)
sudo nginx -s reload
# または
sudo systemctl reload nginx
設定ファイルの構造
/etc/nginx/
├── nginx.conf # メイン設定
├── mime.types # 拡張子と MIME type
├── conf.d/ # 補助設定
├── sites-available/ # サイト設定(Debian/Ubuntu)
│ ├── default
│ └── example.com
├── sites-enabled/ # 有効化したサイト(symlink)
└── modules-enabled/ # 動的モジュール
典型的な nginx.conf
# /etc/nginx/nginx.conf
user www-data;
worker_processes auto; # CPU コア数に自動
pid /run/nginx.pid;
events {
worker_connections 1024; # worker 1 個あたりの最大接続
multi_accept on;
use epoll; # Linux で高効率
}
http {
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
include /etc/nginx/mime.types;
default_type application/octet-stream;
# gzip 圧縮
gzip on;
gzip_vary on;
gzip_proxied any;
gzip_comp_level 6;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml;
# ログ
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
error_log /var/log/nginx/error.log warn;
# 各サイト設定を読み込む
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}
静的サイト配信
# /etc/nginx/sites-available/example.com
server {
listen 80;
listen [::]:80;
server_name example.com www.example.com;
root /var/www/example.com;
index index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
location ~ /\.ht {
deny all;
}
}
PHP-FPM 連携 (Laravel / WordPress)
server {
listen 80;
server_name example.com;
root /var/www/example.com/public;
index index.php index.html;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
# PHP-FPM へ転送
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.2-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
# 静的ファイルキャッシュ
location ~* \.(jpg|jpeg|png|gif|ico|css|js|woff2)$ {
expires 30d;
access_log off;
}
}
リバースプロキシ (Node.js / Python など)
upstream backend {
server 127.0.0.1:3000;
server 127.0.0.1:3001;
server 127.0.0.1:3002;
# least_conn; # 接続数が少ない方へ
# ip_hash; # 同一 IP は同一サーバへ (セッション維持)
}
server {
listen 80;
server_name api.example.com;
location / {
proxy_pass http://backend;
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;
# WebSocket サポート
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
# タイムアウト
proxy_connect_timeout 10s;
proxy_send_timeout 60s;
proxy_read_timeout 60s;
}
}
HTTPS (Let's Encrypt + Certbot)
# Certbot インストール
sudo apt install -y certbot python3-certbot-nginx
# 自動取得 + Nginx 設定書き換え
sudo certbot --nginx -d example.com -d www.example.com
# 90 日有効。自動更新の cron / systemd timer が設定される
sudo systemctl status certbot.timer
sudo certbot renew --dry-run# Certbot が自動生成する設定例
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name example.com www.example.com;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
# HSTS
add_header Strict-Transport-Security "max-age=31536000" always;
# アプリ設定...
}
# HTTP → HTTPS リダイレクト
server {
listen 80;
server_name example.com www.example.com;
return 301 https://$host$request_uri;
}
HTTP/3 (QUIC) 対応
# Nginx 1.25+ で QUIC モジュール組込み版が必要
server {
listen 443 quic reuseport;
listen 443 ssl http2;
http3 on;
add_header Alt-Svc 'h3=":443"; ma=86400';
# 他の設定...
}
Cloudflare との組合せ
- Cloudflare が CDN + DDoS 防御 + SSL 終端、Nginx は Origin として動作
- 本物のクライアント IP を取るには
set_real_ip_from+real_ip_header CF-Connecting-IP - Cloudflare の IP レンジリストを定期更新するスクリプトを cron で回す
- Origin が直接アクセスされないよう、Cloudflare 経由以外をブロック
パフォーマンスチューニング
| 項目 | 推奨値 | 効果 |
|---|---|---|
| worker_processes | auto (CPU コア数) | 並列処理 |
| worker_connections | 1024 〜 4096 | 同時接続 |
| keepalive_timeout | 65s | 接続再利用 |
| sendfile | on | ゼロコピー |
| gzip / brotli | on | 転送量削減 |
| open_file_cache | max=1000 inactive=20s | 静的ファイル高速化 |
| proxy_cache / fastcgi_cache | 有効 | 動的レスポンスキャッシュ |
セキュリティ最低限
# server_tokens off (バージョン非表示)
server_tokens off;
# セキュリティヘッダ
add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-Content-Type-Options "nosniff" always;
add_header X-XSS-Protection "1; mode=block" always;
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
add_header Content-Security-Policy "default-src 'self';" always;
# 隠しファイル / バックアップ拒否
location ~ /\.(git|svn|env|htaccess) { deny all; }
location ~ ~$ { deny all; }
# レート制限
limit_req_zone $binary_remote_addr zone=login:10m rate=5r/m;
location /login {
limit_req zone=login burst=3 nodelay;
# ...
}
FAQ
Q: Apache から Nginx に乗り換えるべき?
A: 静的サイト・API・SPAなら Nginx 一択。WordPress 等の動的 PHP も問題なく動きます。.htaccess に依存している共有ホスティング系は Apache のままが楽。
Q: Nginx の有料版「NGINX Plus」とは?
A: 公式商用版。高度なロードバランシング / ヘルスチェック / セッション保持 / 商用サポート付き。F5 Networks が提供。
Q: Caddy / Traefik と比べてどう?
A: Caddy は自動 HTTPS が標準でシンプル。Traefik はDocker / Kubernetes 統合に強い。シェアと情報量は Nginx が圧倒的。
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページ
同階層のページ
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript base URL 取得方法|window.location.origin と SSR/Node.js 対応
- 4 YouTube Data API v3 エラー一覧|403/400/404 の主要原因と切り分け
- 5 Spring Frameworkのアノテーション一覧
- 6 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- IPv6とは|128bitアドレス・コロン16進表記/::省略・リンクローカル・SLAAC・デュアルスタック NEW 2026-06-22 12:34:44
- MAC アドレスフィルタリングの仕組みと限界 | ネットワーク入門 NEW 2026-06-22 12:19:10
- VPNとは|暗号トンネル・サイト間/リモートアクセス・IPsec/SSL-VPN/WireGuardを解説 NEW 2026-06-22 12:19:10
- WebSocket とは 全二重リアルタイム通信 ws/wss | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/2 とは 多重化・HPACK・バイナリフレーム | ネットワーク入門 NEW 2026-06-22 12:17:25
- Web通信プロトコル入門 HTTP/2・HTTP/3・WebSocket・gRPC・WebRTC | ネットワーク入門 NEW 2026-06-22 12:17:25
- gRPC とは HTTP/2 + Protocol Buffers の高速 RPC | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/3 (QUIC) とは UDP ベースの低遅延 Web 通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- WebRTC とは ブラウザ間 P2P の音声・映像・データ通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- 証明書と認証局(CA)とは|X.509・信頼チェーン・DV/OV/EV・失効(CRL/OCSP)を解説 NEW 2026-06-22 12:17:24
- ファイアウォールとは|パケットフィルタ・ステートフル・DMZ・次世代FW(L4/L7)を解説 NEW 2026-06-22 12:17:24
- iptables/nftablesとは|テーブル・チェーン・ルール例・永続化をLinux視点で解説 NEW 2026-06-22 12:17:24
- HAProxy とは frontend/backend と設定例 | ネットワーク入門 NEW 2026-06-22 12:17:24
- TLS/SSLの仕組み|ハンドシェイク・暗号スイート・前方秘匿性・証明書検証をわかりやすく解説 NEW 2026-06-22 12:17:24
- CDN とは エッジキャッシュ・TTL・Cloudflare/CloudFront | ネットワーク入門 NEW 2026-06-22 12:17:24
コメントを削除してもよろしいでしょうか?