docs: harmonize rb8001/rb10508 roles, gateway routing, ports; unify proxy_pass slashes; externalize RAG; fix nginx-infra refs; generalize embedding dims; skill sharing notes
This commit is contained in:
parent
4876880160
commit
04b78c7ebc
@ -95,10 +95,10 @@ version: 3.0
|
|||||||
│ 51124 서버 (서비스 운영) │
|
│ 51124 서버 (서비스 운영) │
|
||||||
├─────────────────────────────────────────────┤
|
├─────────────────────────────────────────────┤
|
||||||
│ 로빙 서비스: │
|
│ 로빙 서비스: │
|
||||||
│ ┌─────────┐ ┌─────────┐ ┌─────────┐ │
|
│ ┌────────────┐ ┌─────────┐ ┌──────────────┐ │
|
||||||
│ │rb8001 │ │rb10408 │ │rb10508 │ │
|
│ │rb8001 │ │rb10408 │ │rb10508_micro │ │
|
||||||
│ │(테스트) │ │(미디어) │ │(메인) │ │
|
│ │(메인/프로덕션)│ (미디어) │ │(테스트) │ │
|
||||||
│ └─────────┘ └─────────┘ └─────────┘ │
|
│ └────────────┘ └─────────┘ └──────────────┘ │
|
||||||
│ │
|
│ │
|
||||||
│ 스킬 서비스: │
|
│ 스킬 서비스: │
|
||||||
│ ┌─────────┐ ┌─────────┐ ┌──────────┐ │
|
│ ┌─────────┐ ┌─────────┐ ┌──────────┐ │
|
||||||
@ -143,17 +143,19 @@ sequenceDiagram
|
|||||||
participant U as User
|
participant U as User
|
||||||
participant S as Slack
|
participant S as Slack
|
||||||
participant N as nginx(51123)
|
participant N as nginx(51123)
|
||||||
participant R as rb10508(51124)
|
participant G as Gateway(8100)
|
||||||
|
participant R as rb8001(51124)
|
||||||
participant E as Embedding
|
participant E as Embedding
|
||||||
participant DB as PostgreSQL
|
participant DB as PostgreSQL
|
||||||
participant C as ChromaDB
|
participant C as ChromaDB
|
||||||
|
|
||||||
U->>S: 메시지 입력
|
U->>S: 메시지 입력
|
||||||
S->>N: Webhook 전달
|
S->>N: Webhook 전달
|
||||||
N->>R: 요청 라우팅
|
N->>G: 요청 전달
|
||||||
|
G->>R: 라우팅
|
||||||
R->>DB: 스탯/레벨 조회
|
R->>DB: 스탯/레벨 조회
|
||||||
R->>E: 텍스트 임베딩
|
R->>E: 텍스트 임베딩
|
||||||
E-->>R: 384차원 벡터
|
E-->>R: 임베딩 벡터(모델 종속 차원)
|
||||||
R->>C: 유사 기억 검색
|
R->>C: 유사 기억 검색
|
||||||
C-->>R: 관련 컨텍스트
|
C-->>R: 관련 컨텍스트
|
||||||
R->>R: LLM 처리
|
R->>R: LLM 처리
|
||||||
@ -359,4 +361,4 @@ sequenceDiagram
|
|||||||
|
|
||||||
> "로빙과 함께라면, 당신은 더 이상 혼자가 아닙니다."
|
> "로빙과 함께라면, 당신은 더 이상 혼자가 아닙니다."
|
||||||
|
|
||||||
*Last Updated: 2025.01.31*
|
*Last Updated: 2025.01.31*
|
||||||
|
|||||||
@ -27,7 +27,7 @@
|
|||||||
| 서버 | IP | 역할 | 주요 서비스 |
|
| 서버 | IP | 역할 | 주요 서비스 |
|
||||||
|------|-----|------|------------|
|
|------|-----|------|------------|
|
||||||
| 51123 | 192.168.219.45 | 메인 서버 | Gitea, nginx, auth-server, PostgreSQL |
|
| 51123 | 192.168.219.45 | 메인 서버 | Gitea, nginx, auth-server, PostgreSQL |
|
||||||
| 51124 | 192.168.219.52 | 로빙/스킬 서버 | rb8001, rb10508, skill-email, ChromaDB |
|
| 51124 | 192.168.219.52 | 로빙/스킬 서버 | rb8001, rb10508_micro, skill-email, ChromaDB |
|
||||||
|
|
||||||
### 기본 구조
|
### 기본 구조
|
||||||
```
|
```
|
||||||
@ -53,7 +53,7 @@
|
|||||||
│ │ rb8001 (8001) │ │
|
│ │ rb8001 (8001) │ │
|
||||||
│ │ rb10508_micro (10508) │ │
|
│ │ rb10508_micro (10508) │ │
|
||||||
│ │ skill-email (8501) │ │
|
│ │ skill-email (8501) │ │
|
||||||
│ │ skill-news (8502) │ │
|
│ │ skill-news (8505) │ │
|
||||||
│ └─────────────────────────────┘ │
|
│ └─────────────────────────────┘ │
|
||||||
│ ┌─────────────────────────────┐ │
|
│ ┌─────────────────────────────┐ │
|
||||||
│ │ ChromaDB (8000) │ │
|
│ │ ChromaDB (8000) │ │
|
||||||
@ -146,7 +146,7 @@ robeing.conversations: id, robeing_id, user_message, robeing_response
|
|||||||
| 10508 | rb10508_micro | 테스트 로빙 |
|
| 10508 | rb10508_micro | 테스트 로빙 |
|
||||||
| 10408 | rb10408_test | 개발 로빙 |
|
| 10408 | rb10408_test | 개발 로빙 |
|
||||||
| 8501 | skill-email | Gmail 스킬 |
|
| 8501 | skill-email | Gmail 스킬 |
|
||||||
| 8502 | skill-news | 뉴스 스킬 |
|
| 8505 | skill-news | 뉴스 스킬 |
|
||||||
| 8000 | ChromaDB | 벡터 DB |
|
| 8000 | ChromaDB | 벡터 DB |
|
||||||
|
|
||||||
### API 엔드포인트
|
### API 엔드포인트
|
||||||
@ -336,4 +336,4 @@ Gateway (8100)
|
|||||||
**업데이트**: 2025-08-21
|
**업데이트**: 2025-08-21
|
||||||
**작성자**: 로빙 개발팀
|
**작성자**: 로빙 개발팀
|
||||||
**버전**: 2.0
|
**버전**: 2.0
|
||||||
**상태**: 구현 중
|
**상태**: 구현 중
|
||||||
|
|||||||
@ -41,11 +41,13 @@ Embedding: Separated Service (Memory Optimization)
|
|||||||
|
|
||||||
## 시스템 구조 이해하기
|
## 시스템 구조 이해하기
|
||||||
```
|
```
|
||||||
User → Slack → rb10508 Container → PostgreSQL/ChromaDB
|
User → Slack → nginx → Gateway(8100) → rb8001(프로덕션)
|
||||||
↓
|
↓
|
||||||
Embedding Service
|
Embedding Service
|
||||||
↓
|
↓
|
||||||
Skill Services
|
Skill Services (HTTP)
|
||||||
|
↓
|
||||||
|
PostgreSQL / ChromaDB
|
||||||
```
|
```
|
||||||
|
|
||||||
## 실습 과제
|
## 실습 과제
|
||||||
@ -59,4 +61,4 @@ User → Slack → rb10508 Container → PostgreSQL/ChromaDB
|
|||||||
- 동시 처리: 5개 요청
|
- 동시 처리: 5개 요청
|
||||||
|
|
||||||
## 다음 단계
|
## 다음 단계
|
||||||
Part 4 [성장과 진화](../400_growth/README.md)에서 이 아키텍처 위에서 어떻게 성장하는지 학습하세요.
|
Part 4 [성장과 진화](../400_growth/README.md)에서 이 아키텍처 위에서 어떻게 성장하는지 학습하세요.
|
||||||
|
|||||||
@ -51,7 +51,7 @@ sudo chown -R 999:999 ./chromadb_data
|
|||||||
- 3초 룰 구현 (빠른 응답 후 처리)
|
- 3초 룰 구현 (빠른 응답 후 처리)
|
||||||
- 메시지 큐 시스템
|
- 메시지 큐 시스템
|
||||||
|
|
||||||
**rb10508 (메인 브레인)**:
|
**rb10508 (메인 브레인) [당시 기준 — 현행: rb8001가 메인]**:
|
||||||
- 기억 시스템 구현
|
- 기억 시스템 구현
|
||||||
- 감정 모델 통합
|
- 감정 모델 통합
|
||||||
- PostgreSQL 연동
|
- PostgreSQL 연동
|
||||||
@ -103,7 +103,7 @@ WebSocket connection to 'ws://localhost:10508' failed
|
|||||||
|
|
||||||
// 해결: nginx 프록시 설정
|
// 해결: nginx 프록시 설정
|
||||||
location /ws {
|
location /ws {
|
||||||
proxy_pass http://172.17.0.1:10508;
|
proxy_pass http://172.17.0.1:10508/;
|
||||||
proxy_http_version 1.1;
|
proxy_http_version 1.1;
|
||||||
proxy_set_header Upgrade $http_upgrade;
|
proxy_set_header Upgrade $http_upgrade;
|
||||||
proxy_set_header Connection "upgrade";
|
proxy_set_header Connection "upgrade";
|
||||||
@ -254,4 +254,4 @@ async def execute_skill(skill_name: str, params: dict):
|
|||||||
|
|
||||||
로빙은 이제 단순한 챗봇이 아니다. 기억하고, 느끼고, 성장하는 AI 에이전트다. 앞으로도 계속 진화할 것이다.
|
로빙은 이제 단순한 챗봇이 아니다. 기억하고, 느끼고, 성장하는 AI 에이전트다. 앞으로도 계속 진화할 것이다.
|
||||||
|
|
||||||
**"도구에서 동료로, 동료에서 친구로"** - 이것이 로빙이 가는 길이다.
|
**"도구에서 동료로, 동료에서 친구로"** - 이것이 로빙이 가는 길이다.
|
||||||
|
|||||||
@ -368,8 +368,8 @@ class HTTPEmbeddingFunction:
|
|||||||
|----------|------|------|-----------|-------------|
|
|----------|------|------|-----------|-------------|
|
||||||
| **skill_email** | 8501 | 운영 중 (6일) | 이메일 조회/발송 | rb10408, rb10508 |
|
| **skill_email** | 8501 | 운영 중 (6일) | 이메일 조회/발송 | rb10408, rb10508 |
|
||||||
| **skill-news** | 8505 | 정상 (2시간) | 뉴스 검색/요약 | rb10408, rb10508 |
|
| **skill-news** | 8505 | 정상 (2시간) | 뉴스 검색/요약 | rb10408, rb10508 |
|
||||||
| **skill-slack** | 8503 | 정상 (2시간) | Slack 메시지 처리 | rb10408만 |
|
| **skill-slack** | 8503 | 정상 (2시간) | Slack 메시지 처리 | 공용(원칙) — 현재 rb10408만 연결, 확대 예정 |
|
||||||
| **skill-embedding** | 8515 | 정상 (6일) | 텍스트 임베딩 생성 | rb10508만 |
|
| **skill-embedding** | 8515 | 정상 (6일) | 텍스트 임베딩 생성 | 공용(원칙) — 현재 rb10508만 연결, 공용 전환 계획 |
|
||||||
|
|
||||||
### 스킬 통합 개선 방안
|
### 스킬 통합 개선 방안
|
||||||
|
|
||||||
@ -485,4 +485,4 @@ class HTTPEmbeddingFunction:
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
*이 문서는 2025년 8월 11일 51124 서버에서 실측한 데이터를 기반으로 작성되었습니다.*
|
*이 문서는 2025년 8월 11일 51124 서버에서 실측한 데이터를 기반으로 작성되었습니다.*
|
||||||
|
|||||||
@ -15,7 +15,7 @@
|
|||||||
- 흐름: 업로드 → (PDF/이미지 분기) → skill-ocr HTTP 호출 → 텍스트/블록/메타 → RAG(ChromaDB) 저장 → 응답
|
- 흐름: 업로드 → (PDF/이미지 분기) → skill-ocr HTTP 호출 → 텍스트/블록/메타 → RAG(ChromaDB) 저장 → 응답
|
||||||
- 컴포넌트
|
- 컴포넌트
|
||||||
- rb*: 클라이언트 요청 처리, 파일 유형 판별, skill-ocr 호출만 담당
|
- rb*: 클라이언트 요청 처리, 파일 유형 판별, skill-ocr 호출만 담당
|
||||||
- skill-ocr(8501): OCR 파이프라인 수행(PDF: OCRmyPDF, 이미지: PaddleOCR 등)
|
- skill-ocr(8506): OCR 파이프라인 수행(PDF: OCRmyPDF, 이미지: PaddleOCR 등)
|
||||||
- Storage: `/mnt/hdd/uploads/{user_id}/`, 로그 `/mnt/hdd/logs/skill-ocr/`
|
- Storage: `/mnt/hdd/uploads/{user_id}/`, 로그 `/mnt/hdd/logs/skill-ocr/`
|
||||||
- Vector DB: ChromaDB(텍스트 조각) + PostgreSQL(메타)
|
- Vector DB: ChromaDB(텍스트 조각) + PostgreSQL(메타)
|
||||||
|
|
||||||
@ -69,7 +69,7 @@
|
|||||||
- 로그는 `/mnt/hdd/logs/skill-ocr/` 30일 롤링, 샘플: `Fallback to OCR`, `OCR quality low: confidence=0.72`
|
- 로그는 `/mnt/hdd/logs/skill-ocr/` 30일 롤링, 샘플: `Fallback to OCR`, `OCR quality low: confidence=0.72`
|
||||||
|
|
||||||
## 6) 배포 가이드(요약)
|
## 6) 배포 가이드(요약)
|
||||||
- 컨테이너: `skill-ocr`(8501)
|
- 컨테이너: `skill-ocr`(8506)
|
||||||
- 볼륨: `-v /mnt/hdd/uploads:/mnt/hdd/uploads:ro`, `-v /mnt/hdd/logs/skill-ocr:/logs`
|
- 볼륨: `-v /mnt/hdd/uploads:/mnt/hdd/uploads:ro`, `-v /mnt/hdd/logs/skill-ocr:/logs`
|
||||||
- 환경: `LANGS=kor,eng`, `THREADS=N`, `USE_GPU=false|true`
|
- 환경: `LANGS=kor,eng`, `THREADS=N`, `USE_GPU=false|true`
|
||||||
- 헬스체크: `GET /healthz` (main.py/Dockerfile/compose/workflows 동기화)
|
- 헬스체크: `GET /healthz` (main.py/Dockerfile/compose/workflows 동기화)
|
||||||
@ -100,4 +100,3 @@
|
|||||||
- TrOCR: Hugging Face 문서, AAAI 논문
|
- TrOCR: Hugging Face 문서, AAAI 논문
|
||||||
- Donut: GitHub, arXiv, 산업 적용 리뷰
|
- Donut: GitHub, arXiv, 산업 적용 리뷰
|
||||||
- Kraken/Calamari: GitHub, 공식 문서
|
- Kraken/Calamari: GitHub, 공식 문서
|
||||||
|
|
||||||
|
|||||||
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
**작성일**: 2025-09-09
|
**작성일**: 2025-09-09
|
||||||
**작성자**: happybell80 & Claude
|
**작성자**: happybell80 & Claude
|
||||||
**관련 서비스**: rb8001 (RAG 스킬 내부 구현)
|
**관련 서비스**: skill-rag (HTTP 외부 스킬)
|
||||||
**핵심 기술**: Multi-provider Search API, Query Routing, Caching, RAG
|
**핵심 기술**: Multi-provider Search API, Query Routing, Caching, RAG
|
||||||
|
|
||||||
## 1. 검색 프로바이더 계층 구조
|
## 1. 검색 프로바이더 계층 구조
|
||||||
@ -25,7 +25,7 @@
|
|||||||
검색 의도 추가: LLM 프롬프트에 "검색 요청은 /search로" 또는 직접 패턴 매칭.
|
검색 의도 추가: LLM 프롬프트에 "검색 요청은 /search로" 또는 직접 패턴 매칭.
|
||||||
|
|
||||||
```python
|
```python
|
||||||
# rb8001/app/skills/rag.py
|
# 예시 라우팅 (의도별 외부 호출)
|
||||||
def route_by_pattern(query):
|
def route_by_pattern(query):
|
||||||
if "뉴스" in query: return 'news_api'
|
if "뉴스" in query: return 'news_api'
|
||||||
if "언제" in query: return 'duckduckgo' # 즉답
|
if "언제" in query: return 'duckduckgo' # 즉답
|
||||||
@ -35,17 +35,17 @@ def route_by_pattern(query):
|
|||||||
## 3. 구현 아키텍처
|
## 3. 구현 아키텍처
|
||||||
|
|
||||||
```
|
```
|
||||||
사용자 → rb8001 내부 RAG 스킬
|
사용자 → rb8001 → (HTTP) skill-rag
|
||||||
↓
|
↓
|
||||||
[Query Router]
|
[Query Router]
|
||||||
↓
|
↓
|
||||||
[Provider Manager]
|
[Provider Manager]
|
||||||
/ | | \
|
/ | | \
|
||||||
Tavily Brave Serper DuckDuckGo
|
Tavily Brave Serper DuckDuckGo
|
||||||
↓
|
↓
|
||||||
[Result Merger]
|
[Result Merger]
|
||||||
↓
|
↓
|
||||||
[Redis Cache]
|
[Redis Cache]
|
||||||
```
|
```
|
||||||
|
|
||||||
## 4. 캐싱 전략
|
## 4. 캐싱 전략
|
||||||
@ -66,17 +66,17 @@ Tavily Brave Serper DuckDuckGo
|
|||||||
|
|
||||||
### 예상 월 비용: $0.05
|
### 예상 월 비용: $0.05
|
||||||
|
|
||||||
## 6. 구현 위치: rb8001/app/skills/rag.py
|
## 6. 구현 위치: skill-rag (외부 서비스)
|
||||||
|
|
||||||
별도 마이크로서비스 대신 rb8001 내부 RAG 스킬로 구현
|
rb8001 내부 구현 대신 외부 RAG 스킬(HTTP)로 분리
|
||||||
- 웹 검색 + 파일 RAG 통합 처리
|
- 웹 검색 + 파일 RAG 통합 처리 (HTTP 인터페이스)
|
||||||
- Phase 1: Tavily + DuckDuckGo 웹 검색
|
- Phase 1: Tavily + DuckDuckGo 웹 검색
|
||||||
- Phase 2: ChromaDB 파일 검색 통합
|
- Phase 2: ChromaDB 파일 검색 통합
|
||||||
- Phase 3: 복잡도 증가 시 skill-rag 분리
|
- Phase 3: 트래픽 증가 시 스케일아웃 (수평 확장)
|
||||||
|
|
||||||
## 7. 핵심 차별점
|
## 7. 핵심 차별점
|
||||||
|
|
||||||
- 다층 프로바이더로 안정성 확보
|
- 다층 프로바이더로 안정성 확보
|
||||||
- 쿼리 타입별 최적 API 자동 선택
|
- 쿼리 타입별 최적 API 자동 선택
|
||||||
- 무료 한도 최대 활용으로 비용 최소화
|
- 무료 한도 최대 활용으로 비용 최소화
|
||||||
- 캐싱으로 중복 검색 방지
|
- 캐싱으로 중복 검색 방지
|
||||||
|
|||||||
@ -43,11 +43,11 @@
|
|||||||
```
|
```
|
||||||
├── 로빙 컨테이너
|
├── 로빙 컨테이너
|
||||||
│ ├── rb8001:8001 (프로덕션)
|
│ ├── rb8001:8001 (프로덕션)
|
||||||
│ ├── rb10508_test:10508 (테스트)
|
│ ├── rb10508_micro:10508 (테스트)
|
||||||
│ └── rb10408_test:10408 (테스트)
|
│ └── rb10408:10408 (테스트)
|
||||||
├── 스킬 서비스
|
├── 스킬 서비스
|
||||||
│ ├── skill-email:8501 (Gmail 연동)
|
│ ├── skill-email:8501 (Gmail 연동)
|
||||||
│ ├── skill-news:8502
|
│ ├── skill-news:8505
|
||||||
│ ├── skill-embedding:8515 (포트 변경됨)
|
│ ├── skill-embedding:8515 (포트 변경됨)
|
||||||
│ └── skill-slack (멀티봇 지원)
|
│ └── skill-slack (멀티봇 지원)
|
||||||
└── ChromaDB (벡터 DB)
|
└── ChromaDB (벡터 DB)
|
||||||
@ -244,4 +244,4 @@ GET /api/health # 헬스체크
|
|||||||
|
|
||||||
- 이 계획은 초안이며, 구현 과정에서 수정될 수 있음
|
- 이 계획은 초안이며, 구현 과정에서 수정될 수 있음
|
||||||
- 기존 frontend-base의 코드를 최대한 재활용
|
- 기존 frontend-base의 코드를 최대한 재활용
|
||||||
- 서버팀과 사전 협의 필요 (포트, 도메인 등)
|
- 서버팀과 사전 협의 필요 (포트, 도메인 등)
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
# 중앙 인증 서버(auth.ro-being.com) 구축
|
# 중앙 인증 서버(auth.ro-being.com) 구축
|
||||||
|
|
||||||
**날짜**: 2025-07-16
|
**날짜**: 2025-07-16
|
||||||
**관련 서비스**: auth-server, nginx-deploy
|
**관련 서비스**: auth-server, nginx-infra
|
||||||
**작성자**: Claude AI Assistant
|
**작성자**: Claude AI Assistant
|
||||||
|
|
||||||
## 작업 개요
|
## 작업 개요
|
||||||
@ -43,7 +43,7 @@ auth-server/
|
|||||||
|
|
||||||
### 3. Nginx 리버스 프록시 설정
|
### 3. Nginx 리버스 프록시 설정
|
||||||
|
|
||||||
**nginx-deploy/default.conf 수정**:
|
**nginx-infra/default.conf 수정**:
|
||||||
```nginx
|
```nginx
|
||||||
# Auth server configuration
|
# Auth server configuration
|
||||||
server {
|
server {
|
||||||
@ -123,7 +123,7 @@ services:
|
|||||||
## 관련 파일
|
## 관련 파일
|
||||||
|
|
||||||
- `/home/happybell/projects/ivada/auth-server/` - 인증 서버
|
- `/home/happybell/projects/ivada/auth-server/` - 인증 서버
|
||||||
- `/home/happybell/projects/ivada/nginx-deploy/default.conf` - Nginx 설정
|
- `/home/happybell/projects/ivada/nginx-infra/default.conf` - Nginx 설정
|
||||||
- `/home/happybell/projects/ivada/skill_email/` - Gmail 스킬 (통합 예정)
|
- `/home/happybell/projects/ivada/skill_email/` - Gmail 스킬 (통합 예정)
|
||||||
|
|
||||||
## SSL/HTTPS 설정 추가
|
## SSL/HTTPS 설정 추가
|
||||||
@ -135,10 +135,10 @@ services:
|
|||||||
|
|
||||||
### 해결 과정
|
### 해결 과정
|
||||||
|
|
||||||
1. **nginx-deploy 저장소 구조 파악**:
|
1. **nginx-infra 저장소 구조 파악**:
|
||||||
- `default.conf`: Docker nginx 설정 (legacy)
|
- `default.conf`: Docker nginx 설정 (legacy)
|
||||||
- `server-nginx-default`: 실제 서버 nginx 설정 파일
|
- `server-nginx-default`: 실제 서버 nginx 설정 파일
|
||||||
- GitHub Actions가 `server-nginx-default`를 서버의 `/etc/nginx/sites-available/default`로 복사
|
- Gitea Actions가 `server-nginx-default`를 서버의 `/etc/nginx/sites-available/default`로 복사
|
||||||
|
|
||||||
2. **HTTPS 서버 블록 추가**:
|
2. **HTTPS 서버 블록 추가**:
|
||||||
```nginx
|
```nginx
|
||||||
@ -185,4 +185,4 @@ server {
|
|||||||
2. **중앙 인증의 장점**: 토큰 관리 일원화, 보안 강화, 확장성
|
2. **중앙 인증의 장점**: 토큰 관리 일원화, 보안 강화, 확장성
|
||||||
3. **마이크로서비스 구조**: 각 서비스(인증, API, 로빙)를 독립적으로 관리
|
3. **마이크로서비스 구조**: 각 서비스(인증, API, 로빙)를 독립적으로 관리
|
||||||
4. **SSL 설정 패턴**: HTTP는 HTTPS로 리다이렉션, HTTPS 블록에 실제 프록시 설정
|
4. **SSL 설정 패턴**: HTTP는 HTTPS로 리다이렉션, HTTPS 블록에 실제 프록시 설정
|
||||||
5. **nginx-deploy 워크플로우**: 로컬 수정 → Git push → GitHub Actions → 서버 배포
|
5. **nginx-infra 워크플로우**: 로컬 수정 → Git push → Gitea Actions → 서버 배포
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user