폐쇄망에서 웹서버(Apache) 구성하기

👤 김선호 🕒 2025-10-31 12:32
조회수 562

Docker OS 컨테이너 준비

  1. 이미지를 받는다.
    [rocky linux 8.10]
    docker pull rockylinux/rockylinux:8.10
  2. 편하게 작업 할 컨테이너를 하나 띄우고 쉘로 접근한다.
    docker run -it --name rocky-localrepo rockylinux/rockylinux:8.10 /bin/bash

어떤 패키지를 오프라인에서 설치하게 만들지 정한다.

우리가 미리 받아오는 RPM 목록이 곧 그쪽이 쓸 수 있는 설치 가능 목록이 된다.
예시로 httpd, mod_ssl, php, openssl, vim, 이런 식으로 결정한다고 하자.
참고로 Rocky Linux에서 의존성까지 같이 받아오려면 dnf download를 쓴다.

  1. 필요한 유틸 설치
    dnf install -y dnf-plugins-core createrepo tar
  • dnf-plugins-core 안에 dnf download 들어있다.
  • createrepo는 로컬 리포지토리 메타데이터 만드는 툴.
  • tar는 마지막에 묶어서 전달
  1. RPM들을 모아 둘 디렉토리 생성
    mkdir -p /repo/base
    cd /repo/base
  2. 의존성 가져오기
    dnf download --resolve httpd
  • --resolve를 붙이면 httpd가 필요로 하는 의존 라이브러리까지 전부 rpm 파일로 같이 떨어진다.

원하는 다른 패키지도 계속 추가로 긁어올 수 있다.

  • dnf download --resolve mod_ssl
  • dnf download --resolve php
  • dnf download --resolve openssl
  • dnf download --resolve vim-enhanced

핵심 요약

  1. Windows에서:
  • docker run -it rockylinux:8.10
  • 컨테이너 안에서 dnf install -y dnf-plugins-core createrepo tar
  • /repo/base 폴더 만들고 dnf download --resolve <원하는패키지들>
  • createrepo /repo/base
  • /repo/local-httpd.repo 만들어두기
  • tar czvf /repo_bundle.tgz /repo
  • docker cp로 호스트로 꺼냄
  1. 폐쇄망 Rocky 서버에서:
  • /opt/localrepo 에 압축 풀기
  • /etc/yum.repos.d/ 에 .repo 복사
  • dnf install <패키지> 테스트

리버스 프록시 설정

httpd.conf

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule ssl_module modules/mod_ssl.so

<VirtualHost *:21443>
ServerName otp.pola.or.kr

SSLEngine on
SSLCertificateFile    /path/to/otp.pola.or.kr.crt
SSLCertificateKeyFile /path/to/otp.pola.or.kr.key
SSLCertificateChainFile /path/to/chain.pem
# ↑ DMZ 웹서버가 직접 HTTPS를 종료(terminate)해야 하니까 인증서는 DMZ에 있어야 해

# 클라이언트가 /sln/... 으로 들어온 요청을 내부망 sso.pola.or.kr로 프록시
ProxyPreserveHost On

ProxyPass        /sln/ https://sso.pola.or.kr/sln/
ProxyPassReverse /sln/ https://sso.pola.or.kr/sln/

# (선택) 특정 URI만 보낼 수도 있음. 예: /sln/pola/user/regist/step 만
# ProxyPass        /sln/pola/user/regist/step https://sso.pola.or.kr/sln/pola/user/regist/step
# ProxyPassReverse /sln/pola/user/regist/step https://sso.pola.or.kr/sln/pola/user/regist/step

# 보안 헤더 같은 것도 보통 여기서 달아줌
RequestHeader set X-Forwarded-Proto "https"
RequestHeader set X-Forwarded-For %{REMOTE_ADDR}s
RequestHeader set X-Forwarded-Host %{HOST}s
💬 댓글 0
아직 댓글이 없습니다. 첫 댓글을 남겨보세요!
댓글을 작성하려면 로그인해주세요.