프로젝트 상태
📌 릴리스
섹션 제목: “📌 릴리스”현재 릴리스는 v0.2.0-rc.3이며 릴리스 후보입니다. 변경 내용과 태그 시점에 알려진 결함은 릴리스 노트에 있습니다.
v0.1.x 계열은 유지보수되지 않습니다. 수정도, 백포트도, 보안 공지도 없습니다. 또한 v0.1.x는 Admin API의 api_key 필드를 파싱하면서 읽지 않아 그 필드가 아무것도 보호하지 않았습니다.
✅ 지원 항목
섹션 제목: “✅ 지원 항목”| 영역 | 상태 |
|---|---|
| 프로토콜 | TCP 위의 HTTP/1.1과 HTTP/2, QUIC 위의 HTTP/3을 하나의 설정에서. |
| TLS | ACME 공개 인증서 자동 발급, 상주하는 내부 인증 기관, 수동 인증서와 키. |
| 정적 파일 | zstd·gzip 압축, 범위 요청, 조건부 요청을 지원하는 파일 제공. |
| 리버스 프록시 | 여러 업스트림, 여러 부하 분산 정책, 능동 상태 확인, 예비 업스트림. |
| FastCGI | HTTP/1.1과 HTTP/2에서 php_fastcgi 지원. |
| 속도 제한 | 매처 단위의 정확한 로컬 속도 제한. |
| 관측성 | 로테이션을 지원하는 접근 로그와 Prometheus 지표. |
| 관리 | 상태 확인과 설정 다시 로드를 위한 Admin API. |
🛡️ 의도적으로 거부하는 설정
섹션 제목: “🛡️ 의도적으로 거부하는 설정”설정 형식이 정의한 이름은 서버가 구현한 수보다 많습니다. 충족할 수 없는 이름은 로드 시점에 이름을 들어 거부하고 “기능이 없다”고 알립니다. 자주 묻는 예:
map,invoke,tracing같은 지시어storage옵션(인증서와 상태는 로컬 디스크에만 저장하기 때문)on_demand_tls와 OCSP stapling 관련 옵션handle_errors(설정 타입은 있지만 아무 일도 하지 않음)encode br(스트리밍 Brotli 인코더가 없기 때문)
전체 목록은 서버 저장소의 README에 있으며, 파서가 목록에 없는 이름을 거부하면 실패하는 테스트가 지킵니다.
⚠️ 알려진 제한
섹션 제목: “⚠️ 알려진 제한”- 인증서 저장소는 로컬 전용. 저장소가 디스크의 디렉터리이므로 여러 인스턴스가 하나를 공유할 수 없습니다.
- DNS-01 공급자는 하나.
tls { dns cloudflare <token> }와 전역acme_dns는 Cloudflare만 구현합니다. 다른 공급자 이름은 기동 시 거부되며 받아들여 무시되지 않습니다. - HTTP/3의 trailer와 터널. 요청에서 선언한 trailer는 전달되지 않습니다(확정 전
501, 확정 후 스트림 reset). 업스트림 trailer는502가 되고CONNECT는501을 반환합니다. - HTTP/3의 FastCGI는
501을 반환합니다. 그 경로가 자체 FastCGI 클라이언트를 가질 때까지의 동작입니다. - WebSocket 업그레이드는 부하 시 간헐적으로 실패합니다. 바쁜 머신에서 약 10-15%입니다. 원인은 Pingclair의 처리 가 아니라 업스트림
pingora-proxycrate의 경쟁 상태입니다(cloudflare/pingora#946). 유휴 머신에서는 재현되지 않습니다.
🐛 보고
섹션 제목: “🐛 보고”결함과 문서 오류는 issue tracker로 보고하십시오. 비공개 보고 경로를 정한 보안 정책은 아직 공개하지 않았습니다.
