〜 軽量・高速なWebサーバー&リバースプロキシを自在に操る 〜
目次
📌 概要
nginx(エンジンエックス)は、HTTPサーバーとしてだけでなく、SSLの終端やリバースプロキシとしても優秀なWebサーバーです。本記事では以下のスキルを習得できます:
- nginxの基本構造と設定方法
- SSL(HTTPS)対応の設定
- リバースプロキシとしての動作
- HTTPリダイレクトの書き方
🛠 1. nginxのインストールと構成
🔧 インストール
Debian/Ubuntu 系:
sudo apt update
sudo apt install nginx
RHEL/CentOS 系:
sudo dnf install nginx
📁 主な設定ファイルとディレクトリ
| パス | 説明 |
|---|---|
/etc/nginx/nginx.conf | メイン設定ファイル |
/etc/nginx/conf.d/ | サブ設定ファイル(仮想ホストなど) |
/var/www/html/ | Webの公開ディレクトリ |
/etc/nginx/sites-available/ | Debian系の仮想ホスト設定(シンボリックリンクで利用) |
🌐 2. HTTPサーバーとしての設定
server {
listen 80;
server_name example.com;
root /var/www/html;
location / {
index index.html index.htm;
}
}
listen 80:HTTPポートで待機server_name:ホスト名でバーチャルホスト切替root:コンテンツの配置パス
✅ 設定反映と確認
sudo nginx -t # 設定の構文チェック
sudo systemctl reload nginx # 再起動せず設定再読み込み
🔐 3. nginxでSSLを設定する(HTTPS対応)
server {
listen 443 ssl;
server_name example.com;
ssl_certificate /etc/ssl/certs/example.crt;
ssl_certificate_key /etc/ssl/private/example.key;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
location / {
root /var/www/html;
index index.html;
}
}
ポイント解説
| ディレクティブ | 内容 |
|---|---|
ssl_certificate | サーバー証明書のパス |
ssl_certificate_key | 秘密鍵のパス |
ssl_protocols | TLSバージョンの指定(古いSSLを無効化) |
ssl_ciphers | 使用する暗号スイートの制限 |
🔄 4. リバースプロキシの設定
nginx はリバースプロキシとして、別のWebアプリやAPIサーバーの前段に配置可能です。
server {
listen 80;
server_name app.example.com;
location / {
proxy_pass http://localhost: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;
}
}
補足
proxy_pass:バックエンドサーバーのURLproxy_set_header:必要なHTTPヘッダーを設定
↪️ 5. HTTPからHTTPSへのリダイレクト
server {
listen 80;
server_name example.com;
return 301 https://$host$request_uri;
}
return 301:恒久的リダイレクト(SEO的にも正しい)$host$request_uri:完全なリクエストURLを維持
🔍 6. よく使う管理コマンド
| コマンド | 内容 |
|---|---|
nginx -t | 設定の構文チェック |
systemctl start nginx | nginx起動 |
systemctl reload nginx | 設定再読み込み |
nginx -s reload | 同上(手動で実行時) |
📄 まとめ表
| 項目 | 内容 | 設定例 |
|---|---|---|
| HTTPサーバー | 静的ファイル配信 | root, index |
| SSL | HTTPS化 | ssl_certificate, ssl_protocols |
| リバースプロキシ | API中継 | proxy_pass, proxy_set_header |
| リダイレクト | HTTPS強制 | return 301 |
| 管理 | 起動・設定反映 | nginx -t, systemctl reload nginx |
コメント