スキル一覧に戻る

configure-nginx

pjt222
更新日 2 days ago
8 閲覧
17
2
17
GitHubで表示
その他general

について

このスキルは、TLS終端、ロードバランシング、キャッシング、セキュリティヘッダーを備えたWebサーバーおよびリバースプロキシとしてNginxを設定します。静的コンテンツの提供、バックエンドアプリケーションのプロキシ処理、HTTPSのセットアップを目的としています。主要な設定には、バーチャルホスト、アップストリーム、レート制限、パフォーマンス最適化が含まれます。

クイックインストール

Claude Code

推奨
メイン
npx skills add pjt222/agent-almanac -a claude-code
プラグインコマンド代替
/plugin add https://github.com/pjt222/agent-almanac
Git クローン代替
git clone https://github.com/pjt222/agent-almanac.git ~/.claude/skills/configure-nginx

このコマンドをClaude Codeにコピー&ペーストしてスキルをインストールします

ドキュメント


name: configure-nginx locale: es source_locale: en source_commit: 6f65f316 translator: claude-sonnet-4-6 translation_date: 2026-03-16 description: > Configurar Nginx como servidor web y proxy inverso con terminación TLS, balanceo de carga, caché, y cabeceras de seguridad. Cubrir la configuración de hosts virtuales, upstreams, rate limiting, y optimización de rendimiento. Usar cuando se necesite servir contenido estático, hacer proxy de aplicaciones backend, o configurar HTTPS. license: MIT allowed-tools: Read Write Edit Bash Grep Glob metadata: author: Philipp Thoss version: "1.0" domain: containerization complexity: intermediate language: multi tags: nginx, web-server, reverse-proxy, tls, load-balancing

Configurar Nginx

Configurar Nginx como servidor web y proxy inverso con mejores prácticas de seguridad y rendimiento.

Cuándo Usar

  • Sirviendo contenido estático con alto rendimiento
  • Configurando proxy inverso para aplicaciones backend
  • Habilitando terminación TLS/HTTPS
  • Implementando balanceo de carga entre múltiples instancias
  • Configurando rate limiting y cabeceras de seguridad
  • Haciendo proxy de aplicaciones WebSocket

Entradas

  • Requerido: Servicios backend a los que hacer proxy (direcciones y puertos)
  • Requerido: Nombres de dominio para hosts virtuales
  • Opcional: Certificados TLS (o usar Let's Encrypt)
  • Opcional: Reglas de caché para contenido estático
  • Opcional: Configuración de rate limiting

Procedimiento

Paso 1: Instalar y Configurar Nginx Base

# Instalar Nginx
sudo apt-get update && sudo apt-get install -y nginx

# O usar Docker
docker run -d -p 80:80 -p 443:443 \
  -v ./nginx.conf:/etc/nginx/nginx.conf:ro \
  -v ./ssl:/etc/nginx/ssl:ro \
  nginx:1.25-alpine

Configuración principal (/etc/nginx/nginx.conf):

user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;

events {
    worker_connections 1024;
    multi_accept on;
}

http {
    include /etc/nginx/mime.types;
    default_type application/octet-stream;

    # Logging
    log_format main '$remote_addr - $remote_user [$time_local] "$request" '
                    '$status $body_bytes_sent "$http_referer" '
                    '"$http_user_agent"';
    access_log /var/log/nginx/access.log main;

    # Rendimiento
    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;
    keepalive_timeout 65;
    gzip on;
    gzip_types text/plain text/css application/json application/javascript;

    # Incluir configuraciones de sitios
    include /etc/nginx/conf.d/*.conf;
}

Esperado: Nginx instalado y ejecutándose, configuración base optimizada para rendimiento.

En caso de fallo: Validar configuración con nginx -t, revisar logs de error.

Paso 2: Configurar Proxy Inverso

# /etc/nginx/conf.d/app.conf
upstream backend {
    server app1:8000;
    server app2:8000;
    server app3:8000;
}

server {
    listen 80;
    server_name ejemplo.com www.ejemplo.com;

    # Redirigir HTTP a HTTPS
    return 301 https://$server_name$request_uri;
}

server {
    listen 443 ssl http2;
    server_name ejemplo.com www.ejemplo.com;

    # TLS
    ssl_certificate /etc/nginx/ssl/cert.pem;
    ssl_certificate_key /etc/nginx/ssl/key.pem;
    ssl_protocols TLSv1.2 TLSv1.3;

    # Cabeceras de seguridad
    add_header X-Frame-Options DENY;
    add_header X-Content-Type-Options nosniff;
    add_header X-XSS-Protection "1; mode=block";
    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;

    # Proxy al backend
    location / {
        proxy_pass http://backend;
        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;
    }

    # Contenido estático
    location /static/ {
        alias /var/www/static/;
        expires 30d;
        add_header Cache-Control "public, immutable";
    }
}

Esperado: El proxy inverso enruta tráfico al backend, TLS configurado, cabeceras de seguridad presentes.

En caso de fallo: Verificar resolución DNS de upstreams, comprobar certificados TLS, probar con curl -v.

Paso 3: Configurar Rate Limiting

http {
    # Definir zonas de rate limit
    limit_req_zone $binary_remote_addr zone=api:10m rate=10r/s;
    limit_req_zone $binary_remote_addr zone=login:10m rate=1r/s;

    server {
        # Rate limiting general para API
        location /api/ {
            limit_req zone=api burst=20 nodelay;
            proxy_pass http://backend;
        }

        # Rate limiting estricto para login
        location /api/login {
            limit_req zone=login burst=5;
            proxy_pass http://backend;
        }
    }
}

Esperado: Los rate limits protegen el backend de abuso, las respuestas 429 se envían cuando se excede el límite.

En caso de fallo: Ajustar tasas según el tráfico real, monitorizar respuestas 429 en logs.

Paso 4: Verificar Configuración

# Validar sintaxis
sudo nginx -t

# Recargar configuración (sin tiempo de inactividad)
sudo nginx -s reload

# Verificar respuesta
curl -I https://ejemplo.com

# Verificar cabeceras de seguridad
curl -sI https://ejemplo.com | grep -E "X-Frame|X-Content|Strict"

Esperado: Nginx valida y recarga sin errores, las cabeceras de seguridad están presentes.

En caso de fallo: Revisar logs de error (/var/log/nginx/error.log), verificar permisos de archivos.

Validación

  • Nginx inicia sin errores (nginx -t pasa)
  • El proxy inverso enruta correctamente al backend
  • TLS/HTTPS funciona con certificados válidos
  • Las cabeceras de seguridad están presentes en las respuestas
  • El rate limiting funciona según la configuración
  • El contenido estático se sirve con caché adecuada
  • Los logs capturan solicitudes y errores

Errores Comunes

  • Olvidar proxy_set_header Host: El backend no recibe el hostname correcto. Siempre establecer cabeceras de proxy.
  • Certificados TLS expirados: Configurar renovación automática con Let's Encrypt/certbot.
  • Rate limiting demasiado agresivo: Usuarios legítimos bloqueados. Comenzar conservador y ajustar.
  • No habilitar gzip: El tráfico de texto sin comprimir desperdicia ancho de banda. Habilitar gzip.
  • Resolver DNS de upstreams al inicio: Usar resolver para DNS dinámico con servicios en contenedores.

Habilidades Relacionadas

  • configure-reverse-proxy - Patrones avanzados de proxy inverso con Traefik
  • setup-compose-stack - Integrar Nginx en stacks Docker Compose
  • deploy-searxng - Ejemplo práctico de Nginx como proxy para SearXNG

GitHub リポジトリ

pjt222/agent-almanac
パス: i18n/es/skills/configure-nginx
0
agentsagentskillsai-assisted-developmentclaude-codeskillsteams

関連スキル

llamaguard

その他

LlamaGuardは、暴力やヘイトスピーチなど6つの安全性カテゴリーにおいて、LLMの入力と出力をモデレートするMetaの70-80億パラメータモデルです。94〜95%の精度を提供し、vLLM、Hugging Face、Amazon SageMakerを使用してデプロイ可能です。このスキルを使用して、AIアプリケーションにコンテンツフィルタリングと安全策を簡単に統合できます。

スキルを見る

cost-optimization

その他

このClaudeスキルは、リソースの適正サイジング、タグ付け戦略、支出分析を通じて、開発者がクラウドコストを最適化することを支援します。AWS、Azure、GCPにわたるクラウド支出の削減とコストガバナンスの実施のためのフレームワークを提供します。インフラコストの分析、リソースの適正サイジング、または予算制約への対応が必要な際にご利用ください。

スキルを見る

quantizing-models-bitsandbytes

その他

このスキルは、bitsandbytesを使用してLLMを8ビットまたは4ビット精度に量子化し、精度の低下を最小限に抑えつつ50〜75%のメモリ削減を実現します。限られたGPUメモリでより大規模なモデルを実行したり、推論を高速化するのに理想的で、INT8、NF4、FP4などのフォーマットをサポートしています。HuggingFace Transformersと統合され、QLoRAトレーニングや8ビットオプティマイザーを可能にします。

スキルを見る

dispatching-parallel-agents

その他

このClaudeスキルは、複数のエージェントを配備し、3つ以上の独立した問題を並行して調査・修正します。共有状態や依存関係がなく解決可能な、無関係な障害が発生するシナリオ向けに設計されています。中核となる機能は並列問題解決であり、効率を最大化するために独立した問題領域ごとに1つのエージェントを割り当てます。

スキルを見る