操作
バグ #755
未完了【開発計画】インフラヘルパー Phase 2 - 外部公開準備
ステータス:
解決
優先度:
急いで
担当者:
-
開始日:
2025-06-26
期日:
進捗率:
0%
予定工数:
説明
🎯 Phase 2: 外部公開準備(重要)¶
概要¶
インフラヘルパーサービスを専用ドメインで外部公開するための設定と準備を行う。
対応期限¶
2025年7月15日(2週間以内)
実装タスク¶
1. Nginx SNI設定の実装
# /etc/nginx/conf.d/infra-helper.conf
server {
listen 443 ssl http2;
server_name infra.call2arm.com;
ssl_certificate /etc/letsencrypt/live/call2arm.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/call2arm.com/privkey.pem;
location / {
proxy_pass http://infra-helper-web:80;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
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;
}
location /api {
proxy_pass http://infra-helper-api:3000;
proxy_http_version 1.1;
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;
}
location /ws {
proxy_pass http://infra-helper-api:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
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;
}
}
server {
listen 80;
server_name infra.call2arm.com;
return 301 https://$server_name$request_uri;
}
2. DNS設定
- infra.call2arm.com のAレコード追加
- 既存のワイルドカード証明書での動作確認
- または専用証明書の取得
3. セキュリティ強化
- Rate Limiting設定
- CORS設定の見直し
- CSP(Content Security Policy)ヘッダー追加
- WAF規則の設定
// セキュリティミドルウェアの追加
app.use(helmet({
contentSecurityPolicy: {
directives: {
defaultSrc: ["'self'"],
scriptSrc: ["'self'", "'unsafe-inline'", "cdn.tailwindcss.com"],
styleSrc: ["'self'", "'unsafe-inline'"],
imgSrc: ["'self'", "data:", "https:"],
connectSrc: ["'self'", "wss://infra.call2arm.com"]
}
}
}));
// Rate Limiting
const limiter = rateLimit({
windowMs: 15 * 60 * 1000, // 15分
max: 100, // リクエスト数上限
message: "Too many requests from this IP"
});
app.use('/api/', limiter);
4. フロントエンド調整
- API URLの環境変数化
- WebSocket接続URLの動的設定
- エラーハンドリングの改善
- ローディング状態の実装
// 環境設定
const API_BASE_URL = process.env.REACT_APP_API_URL || 'https://infra.call2arm.com/api/v1';
const WS_URL = process.env.REACT_APP_WS_URL || 'wss://infra.call2arm.com/ws';
5. 監視・ログ設定
- アクセスログの設定
- エラーログの集約
- メトリクス収集設定
- アラート設定
テスト項目¶
- 外部からのHTTPS接続テスト
- WebSocket接続テスト
- 認証フローのE2Eテスト
- 負荷テスト(100同時接続)
- セキュリティスキャン
成果物¶
- Nginx設定ファイル
- 更新されたdocker-compose.yml
- セキュリティ設定ドキュメント
- 外部公開チェックリスト
- 運用手順書
操作