Nginxの概要
Nginxはオープンソースの高性能Webサーバーおよびリバースプロキシサーバーです。ホットデプロイメントをサポートし、数ヶ月間の連続稼働が可能で、サービスを停止せずにソフトウェアの更新が行えます。メモリ使用量が少なく、高い同時接続処理能力(最大5万接続)を誇り、無料で商用利用可能です。
主な特徴
- 高い並列処理性能と応答速度
- モジュール型アーキテクチャによる優れた拡張性
- Node.jsと同様の非同期イベント駆動モデル
- 長期安定稼働による信頼性の高さ
- ホットデプロイメントとスムーズなアップグレード
- 活発なオープンソースエコシステム
主な用途
- 静的リソースの配信(ローカルファイルシステム経由)
- リバースプロキシサービス(キャッシュ、負荷分散を含む)
- APIサービス(OpenRestyを使用)
インストール方法(CentOS 7)
yum install nginx -y
基本操作コマンド
systemctlコマンド
systemctl enable nginx # 自動起動有効化
systemctl start nginx # サービス開始
systemctl stop nginx # サービス停止
systemctl restart nginx # サービス再起動
systemctl reload nginx # 設定再読み込み
Nginx実行コマンド
nginx -s reload # 設定再読み込み(ホットリスタート)
nginx -s stop # 即時終了
nginx -s quit # 処理完了後終了
nginx -t # 設定ファイル検証
設定ファイル構造
# グローバル設定
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log warn;
# イベント設定
events {
use epoll;
worker_connections 1024;
}
# HTTP設定
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
# サーバー設定
server {
listen 80;
server_name localhost;
# ロケーション設定
location / {
root /usr/share/nginx/html;
index index.html;
}
}
}
リバースプロキシ設定例
upstream backend_servers {
server 192.168.1.10:8080;
server 192.168.1.11:8080;
}
server {
listen 80;
server_name proxy.example.com;
location / {
proxy_pass http://backend_servers;
}
}
負荷分散戦略
ラウンドロビン(デフォルト)
upstream backend {
server 192.168.1.10:8080;
server 192.168.1.11:8080;
}
IPハッシュ
upstream backend {
ip_hash;
server 192.168.1.10:8080;
server 192.168.1.11:8080;
}
最少接続数
upstream backend {
least_conn;
server 192.168.1.10:8080;
server 192.168.1.11:8080;
}
HTTPS設定
server {
listen 443 ssl;
server_name secure.example.com;
ssl_certificate /path/to/cert.crt;
ssl_certificate_key /path/to/key.key;
location / {
root /var/www/html;
index index.html;
}
}
Gzip圧縮設定
gzip on;
gzip_types text/plain text/css application/json;
gzip_comp_level 6;
gzip_min_length 1024;
キャッシュ設定
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m;
server {
location / {
proxy_cache my_cache;
proxy_cache_valid 200 302 10m;
proxy_cache_key "$scheme$request_method$host$request_uri";
}
}