2026-02-15 08:09:19 +00:00
2026-02-15 07:58:40 +00:00
2026-02-15 08:09:19 +00:00
2026-02-15 08:05:57 +00:00

Nginx Redirect Helm Chart

セキュアなAlpineベースのNginxリダイレクト専用サーバーのHelmチャートです。

特徴

  • セキュリティ重視: 管理画面なし、読み取り専用ファイルシステム、非rootユーザー実行
  • 3つのリダイレクトモード: パス維持、ルートのみ、カスタムパス
  • 完全な設定管理: すべての設定をvalues.yamlで管理
  • 高可用性: Pod Disruption Budget、Anti-Affinity設定
  • Kubernetes標準: Ingress自動統合

インストール

helm install my-redirect ./nginx-redirect -f custom-values.yaml

リダイレクトモード

1. パス維持モード (path-preserve)

元のパスを維持したまま新しいドメインにリダイレクトします。

: https://old-domain.com/products/item1https://new-domain.com/products/item1

redirect:
  mode: "path-preserve"
  statusCode: 301
  targetDomain: "https://new-domain.com"

2. ルートのみモード (root-only)

すべてのパスを無視して、指定したURLにリダイレクトします。

: https://old-domain.com/any/pathhttps://new-domain.com

redirect:
  mode: "root-only"
  statusCode: 301
  targetDomain: "https://new-domain.com"

3. カスタムモード (custom)

個別のパスごとに異なる転送先を指定できます。

redirect:
  mode: "custom"
  statusCode: 301
  customPaths:
    - path: "/old-page"
      target: "https://new-domain.com/new-page"
    - path: "/products"
      target: "https://shop.example.com/products"
    - path: "/blog/*"
      target: "https://blog.example.com"
  fallbackTarget: "https://default-domain.com"

パスの種類:

  • 固定パス: /old-page → 完全一致
  • ワイルドカード: /blog/*/blog/以下のすべてのパスにマッチし、サブパスを保持

セキュリティ機能

  • 非rootユーザー実行: UID/GID 101 (nginx)
  • 読み取り専用ルートファイルシステム
  • 権限昇格の防止
  • すべてのケーパビリティをドロップ
  • Seccompプロファイル適用
  • セキュリティヘッダー自動付与
    • X-Frame-Options
    • X-Content-Type-Options
    • X-XSS-Protection
    • Referrer-Policy

設定例

例1: サイトリニューアルでドメイン変更

redirect:
  mode: "path-preserve"
  statusCode: 301
  targetDomain: "https://new-company-site.com"

ingress:
  hosts:
    - host: old-company-site.com
      paths:
        - path: /
          pathType: Prefix
  tls:
    - secretName: old-site-tls
      hosts:
        - old-company-site.com

例2: ランディングページから特定URLへ

redirect:
  mode: "root-only"
  statusCode: 302
  targetDomain: "https://campaign.example.com/special-offer"

ingress:
  hosts:
    - host: promo.example.com

例3: 複数サービスへの振り分け

redirect:
  mode: "custom"
  statusCode: 301
  customPaths:
    - path: "/shop/*"
      target: "https://shop.example.com"
    - path: "/blog/*"
      target: "https://blog.example.com"
    - path: "/support"
      target: "https://help.example.com"
    - path: "/contact"
      target: "https://main-site.com/contact-us"
  fallbackTarget: "https://main-site.com"

HTTPステータスコード

  • 301: 恒久的なリダイレクト (推奨: SEO評価を引き継ぐ)
  • 302: 一時的なリダイレクト (推奨: テストやキャンペーン用)

リソース要件

デフォルト設定:

  • CPU: 50m (リクエスト) / 100m (上限)
  • メモリ: 64Mi (リクエスト) / 128Mi (上限)

高トラフィック環境では調整してください:

resources:
  limits:
    cpu: 200m
    memory: 256Mi
  requests:
    cpu: 100m
    memory: 128Mi

ヘルスチェック

/health エンドポイントで稼働状態を確認できます:

curl http://your-domain.com/health
# 出力: healthy

アップグレード

helm upgrade my-redirect ./nginx-redirect -f custom-values.yaml

アンインストール

helm uninstall my-redirect

トラブルシューティング

リダイレクトが機能しない

  1. Podのログを確認:

    kubectl logs -l app.kubernetes.io/name=nginx-redirect
    
  2. ConfigMapの内容を確認:

    kubectl get configmap <release-name>-nginx-redirect -o yaml
    
  3. Ingressの設定を確認:

    kubectl describe ingress <release-name>-nginx-redirect
    

SSL/TLS証明書の問題

cert-managerが正しく動作しているか確認:

kubectl get certificate
kubectl describe certificate nginx-redirect-tls

ライセンス

MIT License

Description
Nginx Helm Chart specialized for Redirection
Readme 37 KiB
Languages
Smarty 100%