홈서버 리버스 프록시 적용하기 (feat. Nginx-Proxy-Manager)

홈서버 리버스 프록시 적용하기 (feat. Nginx-Proxy-Manager)

저의 홈서버에는 여러가지 서비스가 올라가있습니다.

GitLab, WireGuard, Bitwarden, jenkins 그리고 각종 사이드 프로젝트 등..

이 각 서버에 접속하려면 각각의 포트번호와 ip 주소 등을 통해 접속해야 하는데 영어단어 암기도 고통스러워하는 저한테는 너무나 어려웠죠

게다가 외부에서 접속하려면 일일이 포트포워딩까지 진행해야 하는 그런 번거로운 과정까지 어찌나 지독하던지..


Nas 서버 (Synology) 관련 설정중 역방향 프록시 관련 설정이 있었습니다.

관련 설정을 통해 접속 url 의 포트번호를 떼낼수 있다는걸 통해 관련 문제를 해결할 수 있다는 것을 우연히 알게되었고.

이후 이 설정을 보다 편리하게 해주는 Nginx-Proxy-Manager 에 대해 알게되었습니다.

(let's encrypt 자동 갱신은 덤)

GitHub - NginxProxyManager/nginx-proxy-manager: Docker container for managing Nginx proxy hosts with a simple, powerful interface
Docker container for managing Nginx proxy hosts with a simple, powerful interface - NginxProxyManager/nginx-proxy-manager
version: '3'
services:
  app:
    image: 'jc21/nginx-proxy-manager:latest'
    ports:
      - '80:80'
      - '81:81'
      - '443:443'
    environment:
      DB_MYSQL_HOST: "db"
      DB_MYSQL_PORT: 3306
      DB_MYSQL_USER: "npm"
      DB_MYSQL_PASSWORD: "npm"
      DB_MYSQL_NAME: "npm"
    volumes:
      - ./data:/data
      - ./letsencrypt:/etc/letsencrypt
  db:
    image: 'jc21/mariadb-aria:latest'
    environment:
      MYSQL_ROOT_PASSWORD: 'npm'
      MYSQL_DATABASE: 'npm'
      MYSQL_USER: 'npm'
      MYSQL_PASSWORD: 'npm'
    volumes:
      - ./mysql:/var/lib/mysql

관련으로 서비스를 띄웠고

포트포워딩 설정

프록시 추가

설정을 통해 저는 x같은 포트번호 암기로 부터 탈출 할 수 있었습니다 :)


위키

리버스 프록시(reverse proxy)는 컴퓨터 네트워크에서 클라이언트를 대신해서 한 대 이상의 서버로부터 자원을 추출하는 프록시 서버의 일종이다. 그런 다음 이러한 자원들이 마치 웹 서버 자체에서 기원한 것처럼 해당 클라이언트로 반환된다.[1] 관련 클라이언트들을 위해 임의의 서버에 접속하는 중간 매개체인 포워드 프록시(forward proxy)와는 반대로, 리버스 프록시는 관련 서버들을 위해 임의의 클라이언트가 해당 서버에 접속하는 중간 매개체이다.