お問い合わせ

info@serverion.com

お電話ください

+1 (302) 380 3902

安全なNginxリバースプロキシを構築するための完全ガイド

安全なNginxリバースプロキシを構築するための完全ガイド

安全で信頼性が高く、スケーラブルなリバースプロキシの構築は、トラフィック量の多いウェブサイトや複雑なアプリケーションを管理する企業やITプロフェッショナルにとって不可欠です。オープンソースのウェブサーバー兼リバースプロキシであるNginxは、バックエンドサービスへのトラフィックをルーティング、最適化、そしてセキュリティ保護するための強力なソリューションです。このガイドでは、Ubuntu 24.04でNginxを使用して堅牢なリバースプロキシを設定する手順を解説し、TLS暗号化、レート制限、Cloudflareとの統合といった重要な手順を網羅します。

エンタープライズ レベルの Web サイト、電子商取引プラットフォーム、またはメディア サーバーを管理している場合は、このガイドを利用することで、パフォーマンスの向上、稼働時間の確保、インフラストラクチャの脆弱性からの保護が可能になります。

Nginx リバース プロキシとは何ですか?

Nginxリバースプロキシは、クライアントとバックエンドサービス間の仲介サーバーとして機能します。クライアントからのリクエストを適切なバックエンドサーバーに転送することで、負荷分散を最適化し、セキュリティを強化し、キャッシュ、SSLターミネーション、トラフィックフィルタリングなどの機能を有効にします。この設定は、メディアサーバー、マルチサイトアプリケーション、ファイアウォールの背後にあるサービスをホスティングする場合に特に便利です。

リバースプロキシが必要な理由

リバース プロキシには、いくつかの重要な利点があります。

  • 強化されたセキュリティ: バックエンド サーバーの 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プロキシ設定のセットアップ

カスタム構成ファイルを作成する

柔軟性とセキュリティを高めるために、特定の設定を保存するにはスニペットファイルを使用します。以下のファイルを作成します。

  1. セキュリティヘッダー:
    sudo nano /etc/nginx/snippets/security-headers.conf 
    保護を強化するためにセキュリティ ヘッダーを定義します。
    add_header X-Frame-Options "SAMEORIGIN"; add_header X-Content-Type-Options "nosniff"; add_header X-XSS-Protection "1; mode=block"; 
  2. プロキシ設定:
    sudo nano /etc/nginx/snippets/proxy.conf 
    長いストリームを最適化し、応答が遅くなるのを防ぎます。
    proxy_connect_timeout 60秒; proxy_send_timeout 60秒; proxy_read_timeout 60秒; 
  3. レート制限:
    sudo nano /etc/nginx/snippets/rate-limit.conf 
    過剰なリクエストを軽減する:
    limit_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 経由でルーティングするための安全なトンネルを作成します。

  1. ダウンロード .deb Cloudflare の GitHub ページからのパッケージ。
  2. パッケージをインストールします。
    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

用途: 参考資料として埋め込みます。短い引用は解説/レビュー用として使用します。

関連ブログ投稿

ja