# csv.wise.ai.kr — arko(문화품앗이) 웹 티어 # 설치 위치: /etc/httpd/conf.d/csv.wise.ai.kr.conf (이 서버는 Apache httpd 를 쓴다) # # 경로: 브라우저 → httpd 443 → [SSH 터널] 127.0.0.1:11060 → WAS(27.255.76.2) Tomcat # DB(MariaDB)는 WAS 안에서만 접근한다. 이 서버는 DB 에 붙지 않는다. # # 127.0.0.1:11060 은 arko-was-tunnel.service 가 만들어 준다. # 502 가 나면 `systemctl status arko-was-tunnel` 부터 확인할 것. ServerName csv.wise.ai.kr # 인증서 갱신(webroot)은 리다이렉트보다 먼저 처리되어야 한다 Alias /.well-known/acme-challenge/ /var/www/html/.well-known/acme-challenge/ Require all granted Options None RewriteEngine On RewriteCond %{REQUEST_URI} !^/\.well-known/acme-challenge/ RewriteRule ^(.*)$ https://%{HTTP_HOST}$1 [R=301,L] ServerName csv.wise.ai.kr SSLEngine on SSLCertificateFile /etc/letsencrypt/live/csv.wise.ai.kr/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/csv.wise.ai.kr/privkey.pem SSLProtocol -all +TLSv1.2 +TLSv1.3 SSLCipherSuite HIGH:!aNULL:!MD5 # 자원봉사 활동사진·첨부파일 업로드가 있어 기본값으로는 부족하다 LimitRequestBody 104857600 Header always set X-Frame-Options "SAMEORIGIN" Header always set X-Content-Type-Options "nosniff" Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains" # 운영(csv.culture.go.kr)이 따로 있는 검증 환경이므로 색인을 막는다 Header always set X-Robots-Tag "noindex, nofollow" # Host 를 그대로 넘겨야 WAS 가 csv.wise.ai.kr 기준으로 링크를 만든다 ProxyPreserveHost On # arko 는 첫 요청에서 JSP 를 컴파일하고, 통계·엑셀 다운로드가 오래 걸린다 ProxyTimeout 300 # 접속기록(개인정보보호 SFR-004)이 실제 접속자 IP 를 남겨야 한다. # 프록시를 한 단 거치므로 원본 IP 를 헤더로 전달한다. RequestHeader set X-Forwarded-Proto "https" ProxyPass /.well-known/acme-challenge/ ! ProxyPass / http://127.0.0.1:11060/ ProxyPassReverse / http://127.0.0.1:11060/ ErrorLog /var/log/httpd/csv_error.log CustomLog /var/log/httpd/csv_access.log combined