🔹 1. Apache Reverse Proxy 개념
Apache의 mod_proxy 모듈을 이용하면, HTTP 사이트를 HTTPS로 변환하여 Nextcloud에서 안전하게 iframe으로 표시할 수 있습니다.
-
외부 HTTP 사이트 → Apache Reverse Proxy → HTTPS 변환 후 Nextcloud에 제공
-
이 방식은 브라우저의 Mixed Content Policy 문제를 해결하고, HTTPS 환경에서 안전하게 iframe을 사용할 수 있도록 도와줍니다.
🔹 2. Apache Reverse Proxy 설정 방법
📌 1) Apache에 Reverse Proxy 모듈 활성화
Ubuntu/Debian 기준으로 아래 명령어를 실행하여 Proxy 관련 모듈을 활성화합니다.
모듈을 활성화한 후 Apache를 재시작합니다.
📌 2) Virtual Host 파일 설정 (Reverse Proxy 구성)
이제 Reverse Proxy를 설정할 가상 호스트 파일을 생성 및 수정합니다.
-
/etc/apache2/sites-available/reverse-proxy.conf파일을 만듭니다.
-
다음 내용을 추가합니다.
-
your-nextcloud.com→ Nextcloud의 도메인 -
proxy.your-nextcloud.com→ Reverse Proxy로 사용할 서브도메인 -
http://your-external-site.com→ iframe으로 표시할 HTTP 사이트
-
✅ 설정 설명
-
ProxyPass와ProxyPassReverse를 이용해 HTTP 사이트를 HTTPS로 변환 -
X-Frame-Options "SAMEORIGIN"→ Nextcloud에서 iframe으로 로드 가능하게 설정 -
Content-Security-Policy→ iframe에서 표시할 도메인 제한
📌 3) Reverse Proxy 설정 적용
-
가상 호스트 활성화
-
Apache 설정 오류 확인
✅ "Syntax OK" 메시지가 나오면 설정이 정상입니다.
-
Apache 재시작
📌 4) Nextcloud의 External Sites에 추가
이제 Nextcloud에서 External Sites 앱을 이용하여 iframe을 추가할 때,
기존 HTTP 사이트 대신 https://proxy.your-nextcloud.com/을 입력하면 됩니다.
✅ 예제
-
기존:
http://your-external-site.com -
변경 후:
https://proxy.your-nextcloud.com
이제 Nextcloud에서 iframe으로 안전하게 표시될 것입니다. 🚀
🔹 추가 설정 (선택 사항)
1️⃣ 만약 HTTP로 접근이 가능해야 한다면?
HTTPS가 아닌 HTTP에서도 프록시가 동작하도록 하려면, 다음 설정을 /etc/apache2/sites-available/reverse-proxy.conf에 추가하세요.
이렇게 하면 HTTP로 접근해도 자동으로 HTTPS로 리디렉트됩니다.
✅ 1️⃣ 현재 SSL 인증서 확인
먼저 현재 설정된 인증서를 확인합니다.
🚀 출력 예시 (정상적인 경우)
❌ 출력 예시 (잘못된 경우, 다른 도메인일 때)
이 경우, SSL 인증서가 proxy.korduck.duckdns.org에 대해 발급되지 않았기 때문에 새로 발급해야 합니다.
✅ 2️⃣ Let’s Encrypt 인증서 갱신 (재발급)
-
기존 인증서 삭제
-
새로운 인증서 발급
🚀 발급이 성공하면 다음과 같은 메시지가 나와야 함
-
Apache 설정 업데이트
✅ 설정 확인
-
Apache 재시작
✅ 3️⃣ 올바른 인증서가 적용되었는지 다시 확인
✅ 출력이 다음과 같으면 정상 작동
이제 다시 브라우저에서 https://proxy.korduck.duckdns.org 접속 테스트하거나,
실행하여 HTTP 200 응답이 오는지 확인하세요.
✅ 2️⃣ 새로운 도메인(proxy.korduck.duckdns.org)으로 SSL 인증서 갱신
📌 방법 1: 기존 도메인 + 새로운 도메인 함께 인증
🚀 이렇게 하면 하나의 인증서에 두 개의 도메인이 포함됨.
또는,
📌 방법 2: 기존 인증서 삭제 후 새로운 도메인만 인증
✅ 3️⃣ Apache/Nginx SSL 설정 수정
✅ 변경해야 할 부분
저장 후 Apache 재시작
/etc/apache2/sites-available/reverse-proxy.conf
ServerName proxy.your-ssl_domain
# SSL 설정 (Let’s Encrypt 사용 가능)
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/your-ssl_domain/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/your-ssl_domain/privkey.pem
# Reverse Proxy 설정
ProxyPreserveHost On
ProxyPass / http://your-external-site/
ProxyPassReverse / http://your-external-site/
# Header 설정 (보안 관련)
Header always set X-Frame-Options “SAMEORIGIN”
Header always set Content-Security-Policy “frame-ancestors ‘self’ https://your-ssl_domain;”
# 로그 설정
ErrorLog ${APACHE_LOG_DIR}/reverse-proxy_error.log
CustomLog ${APACHE_LOG_DIR}/reverse-proxy_access.log combined
ServerName proxy.your-ssl_domain
Redirect permanent / https://proxy.your-ssl_domain/