安全なNginxリバースプロキシを構築するための完全ガイド
安全で信頼性が高く、スケーラブルなリバースプロキシの構築は、トラフィック量の多いウェブサイトや複雑なアプリケーションを管理する企業やITプロフェッショナルにとって不可欠です。オープンソースのウェブサーバー兼リバースプロキシであるNginxは、バックエンドサービスへのトラフィックをルーティング、最適化、そしてセキュリティ保護するための強力なソリューションです。このガイドでは、Ubuntu 24.04でNginxを使用して堅牢なリバースプロキシを設定する手順を解説し、TLS暗号化、レート制限、Cloudflareとの統合といった重要な手順を網羅します。
エンタープライズ レベルの Web サイト、電子商取引プラットフォーム、またはメディア サーバーを管理している場合は、このガイドを利用することで、パフォーマンスの向上、稼働時間の確保、インフラストラクチャの脆弱性からの保護が可能になります。
Nginx リバース プロキシとは何ですか?
Nginxリバースプロキシは、クライアントとバックエンドサービス間の仲介サーバーとして機能します。クライアントからのリクエストを適切なバックエンドサーバーに転送することで、負荷分散を最適化し、セキュリティを強化し、キャッシュ、SSLターミネーション、トラフィックフィルタリングなどの機能を有効にします。この設定は、メディアサーバー、マルチサイトアプリケーション、ファイアウォールの背後にあるサービスをホスティングする場合に特に便利です。
sbb-itb-59e1987
リバースプロキシが必要な理由
リバース プロキシには、いくつかの重要な利点があります。
- 強化されたセキュリティ: バックエンド サーバーの IP を隠し、TLS/SSL による暗号化を有効にします。
- 負荷分散: トラフィックを複数のバックエンド サーバーに均等に分散します。
- 最適化: レイテンシを削減し、リソース効率を向上させます。
- 拡張性: トラフィック量の多いシナリオの管理が容易になります。
- 管理の容易さ: 統合ドメインの背後にある複数のバックエンド サービスの構成を簡素化します。
このチュートリアルでは、次の方法を説明します。
- Nginx をリバース プロキシとして設定します。
- Let's Encrypt TLS 証明書を使用してセットアップを保護します。
- レート制限やリクエスト転送などの高度な最適化を構成します。
- Cloudflare を統合して ISP ポート制限を回避します。
ステップ1: Ubuntu 24.04にNginxとCertbotをインストールする
システムを更新する
ソフトウェアをインストールする前に、システムが最新であることを確認してください。
sudo apt update && sudo apt upgrade NginxとCertbotをインストールする
Nginx プラグインを使用して Nginx と Certbot をインストールするには、次のコマンドを使用します。
sudo apt install nginx -y sudo apt install certbot python3-certbot-nginx -y インストールの確認
Nginx が実行されていることを確認します。
sudo systemctl status nginx アクセスをテストするには、サーバーの IP アドレスを確認します。
ip a ブラウザでIPアドレスにアクセスしてください。成功すると、デフォルトのNginxのウェルカムページが表示されます。
ステップ2: ファイアウォールルールの設定
シンプルなファイアウォール(UFW)を有効にする
UFW を使用すると、ファイアウォール ルールを簡単に管理できます。
sudo ufwは「Nginx Full」を許可します sudo ufwはOpenSSHを許可します sudo ufwを有効にします ファイアウォールのステータスをチェックして、正しいポートが開いていることを確認します。
sudo ufw ステータス ステップ3: Nginxプロキシ設定のセットアップ
カスタム構成ファイルを作成する
柔軟性とセキュリティを高めるために、特定の設定を保存するにはスニペットファイルを使用します。以下のファイルを作成します。
- セキュリティヘッダー:
保護を強化するためにセキュリティ ヘッダーを定義します。sudo nano /etc/nginx/snippets/security-headers.confadd_header X-Frame-Options "SAMEORIGIN"; add_header X-Content-Type-Options "nosniff"; add_header X-XSS-Protection "1; mode=block"; - プロキシ設定:
長いストリームを最適化し、応答が遅くなるのを防ぎます。sudo nano /etc/nginx/snippets/proxy.confproxy_connect_timeout 60秒; proxy_send_timeout 60秒; proxy_read_timeout 60秒; - レート制限:
過剰なリクエストを軽減する:sudo nano /etc/nginx/snippets/rate-limit.conflimit_req_zone $binary_remote_addr ゾーン=mylimit:10m レート=10r/s;
メイン構成にスニペットを含める
メインの Nginx 設定を編集します。
sudo nano /etc/nginx/nginx.conf 以下の内容を http ブロック:
/etc/nginx/snippets/*.conf をインクルードします。 変更を適用するには、Nginx を再起動します。
sudo systemctl reload nginx ステップ4: バックエンドサービスのリバースプロキシの設定
仮想ホストを作成する
バックエンド サービスの構成ファイルを作成します。
sudo nano /etc/nginx/sites-available/jellyfin Jellyfin メディアサーバーの構成例:
サーバー { listen 80; サーバー名 jelly.yourdomain.com; 場所 / { proxy_pass http://10.10.0.112:8096; include /etc/nginx/snippets/proxy.conf; } } シンボリック リンクを作成してサイトを有効にします。
sudo ln -s /etc/nginx/sites-available/jellyfin /etc/nginx/sites-enabled/ Nginx をテストしてリロードします。
sudo nginx -t sudo systemctl reload nginx ステップ5: Let's Encrypt TLSでドメインを保護する
ドメインを保護するには、Let's Encrypt を使用して無料の証明書を発行します。
sudo certbot --nginx -d ゼリー.yourdomain.com CertbotはNginxサイトファイルでSSLを自動設定します。証明書が自動的に更新されるようにするには、systemdタイマーがアクティブになっていることを確認してください。
sudo systemctl list-timers | grep certbot ステップ6:追加のセキュリティとISPポートバイパスのためにCloudflareを統合する
Cloudflaredをインストールする
Cloudflared は、ポート 80 と 443 の ISP 制限を回避し、トラフィックを Cloudflare 経由でルーティングするための安全なトンネルを作成します。
- ダウンロード
.debCloudflare の GitHub ページからのパッケージ。 - パッケージをインストールします。
sudo dpkg -i cloudflared-version.deb
トンネルを構成する
Cloudflareアカウントで認証します。
Cloudflaredトンネルログイン 新しいトンネルを作成します。
cloudflared トンネル 作成 my-tunnel Cloudflare 構成ファイルを編集します。
sudo nano /etc/cloudflared/config.yml 構成例:
トンネル: my-tunnel 認証情報ファイル: /home/user/.cloudflared/my-tunnel.json イングレス: - ホスト名: jelly.yourdomain.com サービス: http://localhost:8096 - サービス: http_status:404 トンネル サービスを開始して有効にします。
sudo systemctl でcloudflaredを有効にする sudo systemctl でcloudflaredを起動する 重要なポイント
- Nginx リバースプロキシ: トラフィックを安全にルーティングし、バックエンド サービスを最適化するために不可欠です。
- TLS暗号化: Let's Encrypt を使用して、無料の SSL 証明書でドメインを保護します。
- ファイアウォールルール:HTTP(80)、HTTPS(443)、SSH(22)に必要なポートを開きます。
- セキュリティの最適化: 攻撃を防ぐためにヘッダーとレート制限を実装します。
- Cloudflareとの統合: 安全で ISP フレンドリーなホスティングには、Cloudflared トンネルを使用します。
- オートメーション: Systemd タイマーにより、SSL 証明書が自動的に更新されます。
結論
安全なNginxリバースプロキシの設定には、細部への配慮と綿密な設定が必要ですが、その努力に見合うだけの成果が得られます。Jellyfinのようなメディアサーバーをホスティングする場合でも、エンタープライズアプリケーションを管理する場合でも、このガイドは、高度に安全で効率的な環境を構築するためのツールと知識を提供します。TLS、Cloudflareトンネル、高度な最適化などの機能により、インフラストラクチャは現代のニーズに対応できるようになります。
出典:「アプリの公開はやめよう!安全なNginxリバースプロキシを構築しよう!」 – KeepItTechie、YouTube、2025年8月19日 – https://www.youtube.com/watch?v=MzbhS2S7H_g
用途: 参考資料として埋め込みます。短い引用は解説/レビュー用として使用します。