|
|
# Local profile
|
|
|
spring:
|
|
|
servlet:
|
|
|
multipart:
|
|
|
max-file-size: 15MB # 개별 파일 최대 크기를 15MB로 증가, multipart 를 이용시 header, type 등 정보가 붙어서 over head 가 발생할 수 있다고 함.
|
|
|
max-request-size: 150MB # 전체 요청 최대 크기를 150MB로 증가, multipart 를 이용시 header, type 등 정보가 붙어서 over head 가 발생할 수 있다고 함.
|
|
|
config:
|
|
|
activate:
|
|
|
on-profile: prd
|
|
|
datasource:
|
|
|
driver-class-name: org.mariadb.jdbc.Driver
|
|
|
url: jdbc:mariadb://localhost:53306/vips?characterEncoding=UTF-8&allowMultiQueries=true # 실서버 IP : 105.19.10.124
|
|
|
username: vips
|
|
|
password: xit5811807
|
|
|
hikari:
|
|
|
|
|
|
# ==========================================
|
|
|
# 커넥션 풀 크기 설정 (4코어 32GB 서버 기준)
|
|
|
# ==========================================
|
|
|
# 동시에 사용할 수 있는 최대 커넥션 수
|
|
|
# 권장값: (코어수 × 2) + (동시사용자 × 0.1) = (4 × 2) + (300 × 0.1) = 38 → 40
|
|
|
# 이 값을 초과하면 새로운 커넥션 요청이 대기 상태가 됨
|
|
|
maximum-pool-size: 40
|
|
|
# 풀에서 유지할 최소 유휴 커넥션 수
|
|
|
# 권장값: maximum-pool-size의 25% (40 × 0.25 = 10)
|
|
|
# 갑작스러운 부하 증가 시 빠른 응답을 위해 미리 준비된 커넥션 유지
|
|
|
minimum-idle: 10
|
|
|
|
|
|
# ==========================================
|
|
|
# 커넥션 타임아웃 설정
|
|
|
# ==========================================
|
|
|
# 커넥션을 얻기 위한 최대 대기 시간 (밀리초)
|
|
|
# 권장값: 30초 - 네트워크 지연이나 데이터베이스 부하 시 적절한 대기 시간
|
|
|
connection-timeout: 30000
|
|
|
# 커넥션 유효성 검사 타임아웃 (밀리초)
|
|
|
# 권장값: 60초 - 유효성 검사가 너무 오래 걸리지 않도록 제한
|
|
|
validation-timeout: 60000
|
|
|
|
|
|
# ==========================================
|
|
|
# 커넥션 생명주기 관리
|
|
|
# ==========================================
|
|
|
# 커넥션의 최대 생명 시간 (밀리초)
|
|
|
# 권장값: 30분 - 데이터베이스 연결이 너무 오래 유지되지 않도록 제한
|
|
|
max-lifetime: 1800000
|
|
|
# 유휴 커넥션을 제거하기 위한 최소 대기 시간 (밀리초)
|
|
|
# 권장값: 10분 - 메모리 절약과 커넥션 재사용의 균형점
|
|
|
idle-timeout: 600000
|
|
|
|
|
|
# ==========================================
|
|
|
# 커넥션 누수 방지 (수백명 동시 사용 환경, 배치가 있으므로 제외 함.)
|
|
|
# ==========================================
|
|
|
# 커넥션 누수 감지 임계값 (밀리초)
|
|
|
# 권장값: 300초 (5분) - 일반적인 쿼리 실행 시간보다 충분히 큰 값
|
|
|
# 너무 짧으면 정상적인 긴 쿼리도 누수로 감지될 수 있음
|
|
|
# 너무 길면 커넥션 누수 시 메모리 부족 가능성
|
|
|
# leak-detection-threshold: 300000
|
|
|
|
|
|
#hikari.connection-test-query 는 JDBC 4.0 이상을 사용하면 설정하지 않는 것을 권장. (공식문서)
|
|
|
#connection-test-query: select 1
|
|
|
auto-commit: false
|
|
|
|
|
|
# Server configuration
|
|
|
server:
|
|
|
port: 18080
|
|
|
servlet:
|
|
|
session:
|
|
|
timeout: 60m # 세션 타임아웃을 60분으로 증가
|
|
|
cookie:
|
|
|
# ==========================================
|
|
|
# http-only: JavaScript로 쿠키 접근 가능 여부
|
|
|
# ==========================================
|
|
|
# true: document.cookie로 접근 불가 → XSS(Cross-Site Scripting) 공격 방어 (권장)
|
|
|
# false: JavaScript로 쿠키 읽기/수정 가능 → XSS 공격에 취약
|
|
|
# 보안: 항상 true 권장 (개발/운영 환경 모두)
|
|
|
http-only: true
|
|
|
|
|
|
# ==========================================
|
|
|
# secure: HTTPS 연결에서만 쿠키 전송 여부
|
|
|
# ==========================================
|
|
|
# true: HTTPS(https://)에서만 쿠키 전송 → 중간자 공격(MITM) 방어
|
|
|
# - HTTPS 구성 필수
|
|
|
# - HTTP(http://)로 접근 시 쿠키 전송 안됨 → 세션 유지 불가, 로그인 실패
|
|
|
# false: HTTP/HTTPS 모두 쿠키 전송 가능
|
|
|
# - 개발 환경에서 HTTP 사용 가능
|
|
|
# - IP 주소(192.168.x.x)로 접근 가능
|
|
|
# 개발환경: false, 운영환경: true (HTTPS 인증서 적용 후)
|
|
|
secure: false
|
|
|
|
|
|
# ==========================================
|
|
|
# same-site: 크로스 사이트 요청 시 쿠키 전송 제어
|
|
|
# ==========================================
|
|
|
# strict: 같은 사이트에서만 쿠키 전송 (가장 안전하지만 불편)
|
|
|
# - example.com → example.com (O)
|
|
|
# - other.com → example.com (X)
|
|
|
# lax: 일부 크로스 사이트 GET 요청 허용 (권장, 보안과 사용성 균형)
|
|
|
# - 같은 사이트 모든 요청 (O)
|
|
|
# - 외부 링크 클릭(GET) (O)
|
|
|
# - 외부 폼 제출(POST) (X)
|
|
|
# none: 모든 크로스 사이트 요청 허용 (secure: true 필수)
|
|
|
# - 모든 외부 사이트 요청 허용
|
|
|
# 보안: CSRF(Cross-Site Request Forgery) 공격 방어
|
|
|
same-site: lax
|
|
|
|
|
|
# ==========================================
|
|
|
# tracking-modes: 세션 추적 방식
|
|
|
# ==========================================
|
|
|
# cookie: 쿠키로만 세션 추적 (권장, 안전)
|
|
|
# - 세션 ID가 쿠키에만 저장됨
|
|
|
# url: URL에 세션 ID 포함 (비권장, 보안 위험)
|
|
|
# - 예: http://example.com/page;jsessionid=ABC123
|
|
|
# - 세션 ID가 URL에 노출되어 로그, 히스토리에 남음
|
|
|
# - 세션 하이재킹 위험 증가
|
|
|
# ssl: SSL 세션 ID 사용
|
|
|
# 보안: cookie만 사용 권장 (URL 노출 방지)
|
|
|
tracking-modes: cookie
|
|
|
|
|
|
#logback
|
|
|
logging:
|
|
|
config: classpath:logback-spring.xml
|
|
|
file:
|
|
|
path: /app/@projectName@/logs
|
|
|
name: '@projectName@'
|
|
|
logback:
|
|
|
rollingpolicy:
|
|
|
max-file-size: 10MB
|
|
|
max-history: 30
|
|
|
level:
|
|
|
org.springframework: WARN
|
|
|
go.kr.project: INFO
|
|
|
go.kr.project.sql: INFO # datasource-proxy
|
|
|
go.kr.project.sql.binding: INFO # datasource-proxy 파라미터 바인딩된 쿼리 로그
|
|
|
egovframework: INFO
|
|
|
org.mybatis: INFO
|
|
|
|
|
|
# File upload configuration
|
|
|
file:
|
|
|
upload:
|
|
|
path: /app/@projectName@/file
|
|
|
max-size: 10 # 단일 파일 최대 크기 (MB)
|
|
|
max-total-size: 100 # 총 파일 최대 크기 (MB)
|
|
|
max-files: 10 # 최대 파일 개수
|
|
|
allowed-extensions: prn,txt,hwp,jpg,jpeg,png,gif,pdf,doc,docx,xls,xlsx,ppt,pptx,txt,zip
|
|
|
real-file-delete: true # 실제 파일 삭제 여부
|
|
|
sub-dirs:
|
|
|
api-target-list-txt-file: api/target # api 조회 대상 파일
|
|
|
|
|
|
# Juso API configuration
|
|
|
juso:
|
|
|
api:
|
|
|
# key: "U01TX0FVVEgyMDE5MDcxNzE2NTM0OTEwODg5MTY=" # 기존 서버 키
|
|
|
key: "devU01TX0FVVEgyMDI1MDYxOTE1MjgxODExNTg2MTY="
|
|
|
url: "http://10.182.60.20/addrlink/addrLinkApiJsonp.do"
|
|
|
|
|
|
# ===== VMIS 통합 설정 (운영 환경) =====
|
|
|
# 주의: 실제 운영 키/호스트는 배포 환경 변수나 외부 설정(Secret)로 주입 권장
|
|
|
vmis:
|
|
|
# RestTemplate 설정
|
|
|
rest-template:
|
|
|
timeout:
|
|
|
connect-timeout-millis: 10000 # 연결 타임아웃
|
|
|
read-timeout-millis: 12000 # 읽기 타임아웃
|
|
|
connection-pool:
|
|
|
max-total: 100 # 최대 연결 수
|
|
|
max-per-route: 20 # 경로당 최대 연결 수
|
|
|
rate-limit:
|
|
|
permits-per-second: 0 # 초당 5건 제한(5.0)
|
|
|
|
|
|
# External API 설정
|
|
|
external:
|
|
|
api:
|
|
|
url:
|
|
|
base: "http://105.19.10.135:18080/api/v1/vehicles" # VMIS-interface 서버 URL (운영), 105.19.10.135
|
|
|
basic:
|
|
|
old-or-new: "old" # 과거 신규 API 선택
|
|
|
old-url: "/old-basic" # 자동차기본정보
|
|
|
new-url: "/new-basic" # 자동차기본정보
|
|
|
ledger:
|
|
|
old-or-new: "new" # 과거 신규 API 선택, 자동차등록원부(갑)은 연계서버에 old 구현안됨.
|
|
|
old-url: "/old-ledger" # 자동차등록원부(갑)
|
|
|
new-url: "/new-ledger" # 자동차등록원부(갑) |