Nginx Proxy Manager 설치 및 사용
GUI환경에서 프록시를 사용할 수 있는 패키지이다.
역방향 프록시를 사용해서 서브 도메인을 통한 여러 서비스에 연결하기 위해 사용한다.
설치
우분투에 도커 설치하기를 통해 Docker와 Docker-Compose를 설치한 이 후
sudo nano docker-compose.yml
Bash위 명령어를 통해 파일을 생성한다.
services:
app:
image: 'jc21/nginx-proxy-manager:latest'
restart: unless-stopped
ports:
- '80:80'
- '81:81'
- '443:443'
volumes:
- ./data:/data
- ./letsencrypt:/etc/letsencrypt
Bash내용으로 파일을 저장한 다음
docker-compose up -d
C++를 하면 설치가 진행된다.
80포트가 이미 사용중
docker-compose up -d
에서 설치가 제대로 진행되지 않는다. 이미 nginx가 워드프레스 서비스를 위해 80, 443포트를 사용하고 있는 것이 원인이다. 일단 systemctl stop nginx
로 nginx를 중단시키면 설치는 제대로 진행된다.
실행
브라우저를 통해 localhost:81
로 접속할 수 있다.
초기 아이디와 비밀 번호는 다음과 같다.
email: admin@example.com
password: changeme
접속한 이후에 아이디 / 비번은 새롭게 설정이 가능하다.
Portainer에서 설치
Portainer에서 관리하고자 기존에 설치되었던 것을 모두 삭제했다.
version: '3.8'
services:
app:
image: 'jc21/nginx-proxy-manager:latest'
restart: unless-stopped
ports:
- '80:80'
- '81:81'
- '443:443'
volumes:
- /home/docker/data/proxymanager/data:/data
- /home/docker/data/proxymanager/letsencrypt:/etc/letsencrypt
Bash위의 내용으로Portainer 설치 및 컨테이너 추가하기에서 다뤘던 새로운 스택을 추가한다.

이렇게 잘 도는 모습을 확인할 수 있다.
새로운 프록시 추가
Nginx-Proxy-Manager와-Cloud-Flare로-간편하게-도메인-연결하기를 통해서 많은 참고를 할 수 있었다.
나의 경우는 우선 https접속을 위한 SSL 인증서 발급이 필요했다.
SSL 인증서 발급
Cloudflare에서 API토큰 발급

내 도메인은 이미 Cloudflare에 연결되어 있었기 때문에 API 토큰을 바로 발급받을 수 있었다.
내 프로필 – API 토큰 – 토큰 생성메뉴를 통해 키를 발급받을 수 있었다.
발급받은 키는 다시 볼 수 없고 새롭게 발급만 가능하므로 다른데 기록을 해두는 편이 좋다.
SSL인증서 발급하기

우선 Nginx Proxy Manager에서 SSL Certificates로 이동한다.

Add SSL Certificate를 클릭하여 새로운 인증서를 추가할 준비를 한다.

도메인과 이메일을 입력하고 DSN Provider는 Cloudflare를 선택한다.
위 그림에서 선택된 부분, dns_cloudflare_api_token은 Cloudflare에서 API토큰 발급에서 발급받은 api token을 입력한다.

잠시 기다리면 이렇게 인증서가 발급된 모습을 볼 수 있다.
루트 도메인에 대한 인증서 발급 필요!
위는 서브 도메인들에 대한 인증서 발급이다.
루트 도메인을 프록시에 연결해서 사용하려면 루트 도메인, 즉 cryun.pe.kr에 대한 인증서가 하나 더 발급되어야 한다.
프록시 추가하기

새로운 프록시는 이곳에서 추가한다.

Add Proxy Host를 클릭한다.

우선 루트 도메인의 연결을 워드프레스 블로그로 연결하기로 했다.
위와같이 루트 도메인을 입력해주고 172.30.1.2는 웹 서버 머신의 내부 아이피를 입력해주었다.
포트는 9080인데 이것은 워드프레스의 도커 컨테이너 서비스 포트이다.

SSL탭에서는 SSL 인증서 발급에서 발급한 인증서를 선택해준다.
아래 옵션은 필요에 따라 활성화해주면 된다.
방화벽에 포트 허용 추가
위와 같이 설정을 하고 도메인으로 접속을 테스트 했을때, 502 Gateway와 같은 오류가 발생하며 접속이 안된다.
이는 해당 머신의 방화벽에서 포트의 허용이 되지 않아서 발생하는 문제이다.ufw allow 9080
과 같은 명령어로 방화벽의 포트 허용 설정을 꼭 해주어야 한다.
프록시 설정하에 외부 요청에 대한 응답 플로우
위와 같은 설정이 완료되면 cryun.pe.kr도메인에 대해 처리는 다음과 같이 처리된다.

도커 컨테이너를 사용함으로써 80 / 443, 즉 여러개의 http요청을 한 머신에서 처리할 수 있게 되었다.
도커 컨테이너를 여러개를 추가하고 포트를 다르게 할당해서 Nginx Proxy Manager를 통해 프록시를 해주는 방식을 통해서 가능하게 되는 것이다.
위 그림에서 어두운 부분이 서브 도메인을 활용해서 추가 http요청을 처리하는 부분을 시각화한 것이다.
댓글을 남겨주세요
Want to join the discussion?Feel free to contribute!