[Ops] #546 configure HTTPS reverse proxy
This commit is contained in:
@@ -57,13 +57,21 @@ VPD Backoffice는 Oracle Database VPD/ORDS 기능을 백오피스 권한 테이
|
||||
|
||||
- 배포 대상: `opc@161.33.6.45` (`vnic-aidp-poc`), 서비스: `vpd-backoffice.service`.
|
||||
- Java: Oracle Linux 9의 `java-21-openjdk-headless`를 설치했다.
|
||||
- 앱은 `0.0.0.0:8080`에서 수신하고 VM firewalld에서 `8080/tcp`을 허용한다.
|
||||
- 앱은 Nginx 뒤의 `127.0.0.1:8080`에서만 수신한다.
|
||||
- ADB Wallet은 앱 디렉터리의 `wallet/`에 배치하고, 앱은 `kbaipoc_high` 서비스 별칭으로 접속한다.
|
||||
- 새로운 ADB에 표준 VPD POC 스키마, `CB_ORDS`, 백오피스 지원 객체, 동적 VPD 필터를 VM SQLcl로 초기화했다. 핵심 지원 테이블 5개와 `CB_AGENT_CTX_PKG`, `CB_AGENT_DOC_VPD_FILTER`의 `VALID` 상태를 확인했다.
|
||||
- 초기화 SQL은 현재 스키마의 `CB_PERMISSION_RULE` 5열 모델에 맞춰 seed 열을 명시하고, 지원 객체 생성은 재실행 가능하도록 `ORA-00955`를 처리한다. Autonomous Database의 parallel DML 충돌을 피하기 위해 보조 SQL은 parallel DML을 비활성화하고 seed 전 트랜잭션을 끝낸다.
|
||||
- VM 내부 로그인과 인증된 대시보드에서 ADB 조회·도움말 SVG를 확인했고, 외부 `http://161.33.6.45:8080/login`도 HTTP `200`을 반환했다.
|
||||
- VM 내부 로그인과 인증된 대시보드에서 ADB 조회·도움말 SVG를 확인했다.
|
||||
|
||||
> 현재 접속 주소는 IP 기반 HTTP이므로 테스트 전용이다. 운영 전환 시에는 도메인과 신뢰할 수 있는 TLS 인증서를 구성하고 `BACKOFFICE_REQUIRE_HTTPS=true`, secure session cookie를 활성화해야 한다.
|
||||
## 2026-07-07 HTTPS 전환 결과
|
||||
|
||||
- 공개 주소: `https://kb.cloud-handson.com`.
|
||||
- DNS A 레코드 `kb.cloud-handson.com → 161.33.6.45`와 Nginx HTTP-01 경로를 외부에서 검증했다.
|
||||
- Nginx는 80/443에서 수신하고 `127.0.0.1:8080`의 Spring Boot 서비스로 프록시한다. HTTP 요청은 HTTPS로 `301` 리다이렉트한다.
|
||||
- Let’s Encrypt 인증서를 Certbot Nginx 플러그인으로 발급했다. 인증서 CN은 `kb.cloud-handson.com`, 만료일은 2026-10-05다.
|
||||
- `certbot-renew.timer`를 enable해 자동 갱신을 설정했다.
|
||||
- SELinux enforcing 환경에서 `httpd_can_network_connect`를 영구 허용해 Nginx의 localhost upstream 연결을 허용했다.
|
||||
- 백오피스 환경은 `BACKOFFICE_REQUIRE_HTTPS=true`, secure session cookie로 전환했다.
|
||||
|
||||
## 검증
|
||||
|
||||
@@ -75,4 +83,5 @@ VPD Backoffice는 Oracle Database VPD/ORDS 기능을 백오피스 권한 테이
|
||||
- 외부 `/login` HTTP 200
|
||||
- `systemctl status vpd-backoffice`가 `active (running)`이고 앱 로그에서 `vpd-backoffice-pool` 연결이 성공한다.
|
||||
- VM SQLcl에서 VPD context package body와 dynamic filter가 `VALID`이다.
|
||||
- `http://161.33.6.45:8080/login`이 외부에서 HTTP `200`을 반환한다.
|
||||
- `https://kb.cloud-handson.com/login`이 외부에서 HTTP `200`을 반환하고 인증서 발급자가 Let’s Encrypt인지 확인한다.
|
||||
- `http://kb.cloud-handson.com/login`은 HTTPS 주소로 `301` 리다이렉트한다.
|
||||
|
||||
Reference in New Issue
Block a user