지식 공유
폐쇄망에서 웹서버(Apache) 구성하기
## 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는 마지막에 묶어서 전달
2. RPM들을 모아 둘 디렉토리 생성
mkdir -p /repo/base
cd /repo/base
3. 의존성 가져오기
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로 호스트로 꺼냄
2. 폐쇄망 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
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
```