docs: record 2025-10-21 nginx gateway issues
This commit is contained in:
parent
deb12882e7
commit
e2e82169e6
64
troubleshooting/251021_nginx_gateway_ongoing_issues.md
Normal file
64
troubleshooting/251021_nginx_gateway_ongoing_issues.md
Normal file
@ -0,0 +1,64 @@
|
|||||||
|
# 2025-10-21 nginx / gateway 로그 점검
|
||||||
|
|
||||||
|
**작성일**: 2025-10-21
|
||||||
|
**작성자**: codex
|
||||||
|
**상태**: 진행 중
|
||||||
|
|
||||||
|
## 요약
|
||||||
|
- nginx와 robeing-gateway 최근 로그를 재점검한 결과, 이전에 기록된 이슈 중 다수가 아직 해결되지 않았음을 확인함.
|
||||||
|
- Slack 인터랙티브 이벤트, 잘못된 upstream 프록시 설정, 로그 로테이션 권한, 과도한 헬스체크 요청 등의 문제가 반복 발생 중.
|
||||||
|
|
||||||
|
## 상세 진단
|
||||||
|
|
||||||
|
### 1. Slack 인터랙티브 엔드포인트 500 오류
|
||||||
|
- **증상**: Slack interactive 호출이 간헐적으로 500 응답.
|
||||||
|
- **로그 근거**:
|
||||||
|
- `docker logs --since "2025-10-20T12:00:00" robeing-gateway`
|
||||||
|
`2025-10-20 12:09:09,983 - app.routers.slack - ERROR - Slack interactive proxy error: All connection attempts failed`
|
||||||
|
- `mnt/hdd/logs/nginx/access.log.1`
|
||||||
|
`44.200.187.50 - - [20/Oct/2025:12:09:09 +0900] "POST /gateway/slack/interactive HTTP/1.1" 500 42 "-" "Slackbot 1.0"`
|
||||||
|
- **추정 원인**: 백엔드 rb8001(192.168.219.52:8001) 연결 실패로 인한 프록시 오류.
|
||||||
|
- **조치 제안**: rb8001 가용성 모니터링 및 재시도/타임아웃 정책 보완, 장애 발생 시 알람 추가.
|
||||||
|
|
||||||
|
### 2. `/api`, `/admin` 라우트의 잘못된 upstream 포트
|
||||||
|
- **증상**: 외부 취약점 스캐너가 `phpunit` 경로를 탐지할 때 502 발생.
|
||||||
|
- **로그 근거**:
|
||||||
|
- `mnt/hdd/logs/nginx/error.log.1`
|
||||||
|
`connect() failed (111: Unknown error) while connecting to upstream ... "http://127.0.0.1:8000/..."`
|
||||||
|
- 현재 설정: `etc/nginx/sites-available/default:56,65` → `proxy_pass http://localhost:8000;`
|
||||||
|
- 실제 게이트웨이 노출 포트: `docker inspect robeing-gateway` → host 8100 → container 8000
|
||||||
|
- **조치 제안**: `/api`, `/admin` 등 gateway 측 엔드포인트를 `http://localhost:8100`으로 수정하고 nginx reload.
|
||||||
|
|
||||||
|
### 3. nginx 로그 로테이션 권한 오류
|
||||||
|
- **증상**: 로그 로테이션 시점에 nginx가 로그 파일을 열지 못해 `[emerg]` 발생.
|
||||||
|
- **로그 근거**:
|
||||||
|
- `mnt/hdd/logs/nginx/error.log.1`
|
||||||
|
`2025/10/21 00:00:10 [emerg] ... open() "/var/log/nginx/access.log" failed (13: Permission denied)`
|
||||||
|
- logrotate 설정: `etc/logrotate.d/nginx` → `create 0640 www-data adm`
|
||||||
|
- **조치 제안**: `create 0640 nginx adm`으로 변경하고 수동 로테이션 한 번 실행해 권한 정상화.
|
||||||
|
|
||||||
|
### 4. 헬스체크 요청 과다
|
||||||
|
- **증상**: robeing-gateway 컨테이너 로그에 `/healthz` 호출이 초당 여러 번 기록.
|
||||||
|
- **로그 근거**:
|
||||||
|
- `docker logs robeing-gateway` → 짧은 간격의 `GET /healthz` 다수.
|
||||||
|
- 관련 문서: `DOCS/troubleshooting/250921_happybell80_healthcheck_frequency_issue.md` (interval 300s 권장).
|
||||||
|
- **조치 제안**: compose / 모니터링 설정에서 헬스체크 간격 재조정 및 HealthCheckFilter 적용.
|
||||||
|
|
||||||
|
### 5. Slack 사용자 매핑 누락
|
||||||
|
- **증상**: 특정 워크스페이스 사용자 이벤트 처리 실패.
|
||||||
|
- **로그 근거**:
|
||||||
|
- `docker logs robeing-gateway | grep 'User not registered'` → 2025-10-13~14 계속 발생 (`team_id=T09C98KB933`).
|
||||||
|
- **조치 제안**: Slack 사용자-UUID 동기화 런북 점검, 신규 워크스페이스 온보딩 절차 확립.
|
||||||
|
|
||||||
|
### 6. SSL Handshake 오류 지속
|
||||||
|
- **증상**: 외부 IP 대상으로 `SSL_do_handshake() failed (bad key share)` 다수 발생.
|
||||||
|
- **로그 근거**:
|
||||||
|
- `mnt/hdd/logs/nginx/error.log.1` → 2025-10-20~21 다양한 IP에서 반복.
|
||||||
|
- **조치 제안**: TLS 설정 재검토(지원 암호군 축소, TLS1.3 설정 확인) 및 fail2ban 등 반복 스캐너 차단.
|
||||||
|
|
||||||
|
## 다음 단계
|
||||||
|
1. nginx 설정 수정(포트, logrotate) 및 배포 → reload 테스트.
|
||||||
|
2. Slack interactive 장애 시 알람/재시도 로직 검토, rb8001 헬스체크 강화.
|
||||||
|
3. 헬스체크 간격 조정 작업을 compose/배포 파이프라인에 반영.
|
||||||
|
4. Slack 사용자 동기화 상태 점검 및 누락 사용자 등록.
|
||||||
|
5. TLS 설정 개선과 함께 보안 차단 정책(fail2ban 등) 도입 검토.
|
||||||
Loading…
x
Reference in New Issue
Block a user