웹사이트 검색

Docker와 함께 Nginx 프록시 관리자를 설치하고 사용하는 방법


이 페이지에서

  1. 전제 조건
  2. 1단계 - 방화벽 구성\n
    1. 센트 OS/록키 리눅스/알마 리눅스
    2. 우분투/데비안

    1. 센트 OS/록키 리눅스/알마 리눅스
    2. 우분투
    3. 데비안

    1. Nginx 프록시 관리자에서 Ghost 구성\n

    1. Nginx Proxy Manager의 다른 용도
    2. Nginx Proxy Manager를 사용하여 정적 웹사이트 호스팅\n

    1. Nginx 프록시 관리자 액세스 제어 기능 사용\n
    2. 더 많은 도메인 이름 지원 활성화\n
    3. 기본 방문 페이지 리디렉션

    리버스 프록시는 다른 웹 서버나 웹 서비스 앞에 위치할 수 있는 웹 서버입니다. 나가는 트래픽을 암호화하고 로드 밸런서 역할을 하며 트래픽을 리디렉션하고 보호 기능을 제공할 수 있습니다. Nginx 웹 서버는 기존 서버 앞에서 프록시 서버로 사용할 수 있지만 때로는 설정이 지루할 수 있으며 제대로 수행되지 않으면 문제가 발생할 수 있습니다.

    Nginx Proxy Manager는 Lets Encrypt를 사용한 내장 SSL 지원, 다중 호스트 지원, HTTP 인증, 액세스 목록 및 사용자와 같은 기능이 포함된 그래픽 사용자 인터페이스(GUI)를 제공하여 Nginx를 프록시 서버로 설정하기 쉽게 해주는 애플리케이션입니다. 관리.

    이 튜토리얼은 Docker를 사용하여 Linux 서버에 Nginx 프록시 관리자를 설치하는 방법을 알려줍니다. 단일 자습서에서 모든 인기 있는 Linux 배포판을 다룰 것입니다.

    전제 조건

    • 최소 1GB RAM이 있는 Ubuntu/Debian/CentOS/Alma Linux/Rocky Linux를 실행하는 Linux 서버.\n
    • sudo 권한이 있는 루트가 아닌 사용자.\n
    • 서버를 가리키는 npm.example.com과 같은 정규화된 도메인 이름(FQDN).\n

    1단계 - 방화벽 구성

    센트 OS/록키 리눅스/알마 리눅스

    Firewalld 방화벽이 설치되어 있어야 합니다. 방화벽 상태를 확인하십시오.

    $ sudo firewall-cmd --state
    running
    

    포트 80, 81 및 443을 엽니다.

    $ sudo firewall-cmd --permanent --add-service=http
    $ sudo firewall-cmd --permanent --add-service=https
    $ sudo firewall-cmd --permanent --add-port=81/tcp
    

    변경 사항을 적용하려면 방화벽을 다시 로드하십시오.

    $ sudo firewall-cmd --reload
    

    우분투/데비안

    Ubuntu 및 Debian 시스템은 기본적으로 ufw(복잡하지 않은 방화벽)를 사용합니다.

    방화벽이 실행 중인지 확인하십시오.

    $ sudo ufw status
    

    실행 중이면 포트 80, 81 및 443을 엽니다.

    $ sudo ufw allow 80
    $ sudo ufw allow 81
    $ sudo ufw allow 443
    

    방화벽이 실행되고 있지 않으면 SSH 포트를 엽니다.

    $ sudo ufw allow "OpenSSH"
    

    방화벽이 실행되고 있지 않으면 활성화하십시오.

    $ sudo ufw enable
    

    실행 중인 경우 다시 로드하여 변경 사항을 적용합니다.

    $ sudo ufw reload
    

    2단계 - 도커 설치

    센트 OS/록키 리눅스/알마 리눅스

    다음 명령을 실행하여 Docker를 설치합니다.

    $ sudo yum install -y yum-utils
    $ sudo yum-config-manager \
        --add-repo \
        https://download.docker.com/linux/centos/docker-ce.repo
    $ sudo yum install docker-ce docker-ce-cli containerd.io
    

    우분투

    $ sudo apt install ca-certificates curl gnupg lsb-release
    $ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
    $ echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
      $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
    $ sudo apt update
    $ sudo apt install docker-ce docker-ce-cli containerd.io
    

    데비안

    $ sudo apt install ca-certificates curl gnupg lsb-release
    $ curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
    $ echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian \
      $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
    $ sudo apt update
    $ sudo apt install docker-ce docker-ce-cli containerd.io
    

    Docker 서비스를 활성화하고 시작합니다.

    $ sudo systemctl start docker --now
    

    Docker 그룹에 사용자 이름을 추가합니다.

    $ sudo usermod -aG docker $USER
    

    시스템에서 로그아웃했다가 다시 로그인하여 변경 사항을 적용하십시오.

    3단계 - Docker Compose 설치

    Docker Compose 바이너리를 다운로드하고 설치합니다.

    $ sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
    

    바이너리에 실행 권한을 적용합니다.

    $ sudo chmod +x /usr/local/bin/docker-compose
    

    4단계 - Docker Compose 파일 생성

    Nginx 프록시 관리자용 디렉터리를 만듭니다.

    $ mkdir ~/nginx-proxy
    

    디렉터리로 전환합니다.

    $ cd ~/nginx-proxy
    

    사용자 데이터 및 SSL 인증서용 디렉토리를 생성합니다.

    $ mkdir {data,letsencrypt}
    

    편집을 위해 docker-compose.yml 파일을 만들고 엽니다.

    $ nano docker-compose.yml
    

    다음 코드를 붙여넣습니다.

    version: "3"
    services:
      npm-app:
        image: 'jc21/nginx-proxy-manager:latest'
        container_name: npm-app
        restart: unless-stopped
        ports:
          - '80:80' # Public HTTP Port
          - '443:443' # Public HTTPS Port
          - '81:81' # Admin Web Port
          # Add any other Stream port you want to expose
          # - '21:21' # FTP
        environment:
          DB_MYSQL_HOST: "npm-db"
          DB_MYSQL_PORT: 3306
          DB_MYSQL_USER: "npm"
          DB_MYSQL_PASSWORD: "npm"
          DB_MYSQL_NAME: "npm"
          # Uncomment the line below if IPv6 is not enabled on your host
          # DISABLE_IPV6: 'true'
        volumes:
          - ./data:/data
          - ./letsencrypt:/etc/letsencrypt
        depends_on:
          - npm-db
        networks:
          - npm-nw
          - npm-internal
    
      npm-db:
        image: 'mariadb:latest'
        container_name: npm-db
        restart: unless-stopped
        environment:
          MYSQL_ROOT_PASSWORD: 'npm'
          MYSQL_DATABASE: 'npm'
          MYSQL_USER: 'npm'
          MYSQL_PASSWORD: 'npm'
        volumes:
          - ./data/mysql:/var/lib/mysql
        networks:
          - npm-internal
    
    networks:
      npm-internal:
      npm-nw:
        external: true
    

    Ctrl + X를 누르고 메시지가 표시되면 Y를 입력하여 파일을 저장합니다.

    파일을 살펴보겠습니다. 파일의 첫 번째 부분은 Nginx 프록시 관리자 이미지를 가져오고 데이터베이스 자격 증명 형식으로 일부 환경 변수를 설정하는 곳입니다. 또한 액세스를 위해 포트 80, 81 및 443을 서버에 노출합니다. FTP 액세스를 위해 더 많은 포트(예: 21)를 노출할 수 있습니다. DISABLE_IPV6: true 행의 주석 처리를 제거하여 IPV6 지원을 비활성화할 수 있습니다. 데이터 및 SQL 스토리지를 위해 호스트에서 Docker로 여러 디렉터리를 매핑했습니다.

    여기서는 두 개의 네트워크를 사용하고 있습니다. 하나는 프록시 관리자와 데이터베이스를 연결하는 내부 네트워크 npm-internal입니다. 이것은 자동으로 생성되므로 선택 사항입니다. 그러나 여기서는 선택한 이름을 지정하여 수동으로 수행합니다.

    npm-nw라는 프록시 관리자 컨테이너에 외부 네트워크를 추가했습니다. 이 네트워크는 설치한 다른 도커 컨테이너에 프록시 관리자를 연결하는 데 사용할 수 있기 때문에 필수적입니다. 네트워크를 사용하면 포트를 서버에 노출할 필요 없이 모든 컨테이너를 직접 연결할 수 있습니다.

    5단계 - Nginx 프록시 관리자 실행

    Docker 컨테이너를 시작하기 전에 외부 네트워크 npm-nw를 생성해야 합니다. 내부 네트워크는 자동으로 생성됩니다. 다음 명령을 실행하여 외부 네트워크를 생성합니다.

    $ docker network create npm-nw
    

    다음 명령을 사용하여 Docker 컨테이너를 시작합니다.

    $ docker-compose up -d
    

    컨테이너의 상태를 확인합니다.

    $ docker ps
    CONTAINER ID   IMAGE                             COMMAND                  CREATED              STATUS              PORTS                                                                                  NAMES
    c91ca0ddca97   jc21/nginx-proxy-manager:latest   "/init"                  About a minute ago   Up About a minute   0.0.0.0:80-81->80-81/tcp, :::80-81->80-81/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp   npm-app
    1738d71b95da   mariadb:latest                    "docker-entrypoint.s…"   About a minute ago   Up About a minute   3306/tcp                                                                               npm-db
    

    6단계 - Nginx 프록시 관리자에 액세스

    이제 URL http://yourserverIP:81을 통해 Nginx 프록시 관리자에 액세스할 수 있습니다. 다음과 같은 로그인 화면이 나타납니다.

    로그인하려면 다음 기본 자격 증명을 입력하십시오.

    이메일 주소: [email 비밀번호: changeme

    다음으로 이름과 이메일 주소를 설정하라는 메시지가 즉시 표시됩니다.

    저장 버튼을 클릭하면 새 비밀번호를 설정하라는 메시지가 표시됩니다.

    저장 버튼을 다시 클릭하면 이제 애플리케이션 사용을 시작할 수 있습니다.

    브라우저에서 URL http://yourserverIP를 열면 프록시 관리자가 설정한 기본 페이지로 이동합니다.

    7단계 - Nginx 프록시 관리자용 도메인 이름 및 SSL 설정

    Nginx 프록시 관리자에 액세스하기 위한 도메인 이름을 설정하겠습니다. 이 단계는 선택 사항이지만 응용 프로그램을 SSL 뒤에 배치하려는 경우에 유용합니다.

    대시보드 메뉴에서 호스트 >> 프록시 호스트를 클릭하여 프록시 호스트 페이지를 엽니다. 거기에서 프록시 호스트 추가 버튼을 클릭하여 계속 진행하십시오.

    FQDN 이름(npm.example.com)을 추가하고 클릭합니다. 서버 IP 주소를 입력하고 전달 포트로 81을 입력합니다.

    SSL 탭으로 전환합니다.

    드롭다운 메뉴에서 새 SSL 인증서 요청을 선택합니다. 강제 SSL 및 HTTP/2 지원 옵션을 선택합니다. HSTS를 활성화하려는 경우 HSTS도 활성화할 수 있습니다. Cloudflare를 통해 도메인을 구성한 경우 강제 SSL 옵션을 활성화하지 마십시오. 그렇지 않으면 리디렉션 루프에 갇히게 됩니다.

    이메일 주소를 입력하고 Lets Encrypt 서비스 약관(TOS)에 동의한 후 저장 버튼을 클릭하여 완료합니다.

    도메인이 활성화되어 작동해야 합니다. 브라우저에서 https://npm.example.com을 열면 Nginx 프록시 관리자 로그인 화면이 나타납니다.

    기본 랜딩 페이지에 대해 유사하게 수행하고 https://example.com과 같은 도메인 이름에 할당할 수 있습니다. 프록시 호스트를 설정하는 동안 포트를 81에서 81로 변경하기만 하면 됩니다.

    8단계 - 다른 Docker 웹 애플리케이션과 함께 Nginx Proxy Manager 사용

    프록시 관리자를 설치했으므로 이제 사용할 차례입니다. 가장 먼저 할 일은 이를 사용하여 다른 Docker 웹 애플리케이션을 호스팅하는 것입니다. 이를 위해 Ghost 블로그를 설치합니다. 자세한 내용은 Ubuntu 서버에서 Docker를 사용하여 Ghost 설치에 대한 자습서를 확인하십시오.

    Ghost 블로그를 위한 다른 디렉토리를 만드십시오.

    $ mkdir ~/ghost
    

    Ghost 디렉토리로 전환하십시오.

    $ cd ~/ghost
    

    콘텐츠와 데이터베이스에 대한 두 개의 디렉터리를 만듭니다.

    $ mkdir {content,mysql}
    

    동일한 MySQL 이미지를 사용하는 경우에도 프록시 관리자와 데이터 및 해당 컨테이너를 별도로 유지해야 합니다. 이렇게 하면 발생할 수 있는 문제를 격리하고 필요한 경우 물건을 이동할 수 있습니다.

    편집을 위해 Docker 작성 파일을 만들고 엽니다.

    $ nano docker-compose.yml
    

    다음 코드를 붙여넣습니다. example.com을 Ghost 블로그의 실제 도메인 이름으로 바꾸십시오. 이메일을 받으려면 SMTP 세부 정보를 입력하십시오. 필요하지 않은 경우 제거할 수 있습니다.

    version: '3.3'
    services:
    
      ghost-app:
        image: ghost:latest
        container_name: ghost-app
        restart: always
        depends_on:
          - ghost-db
        environment:
          url: https://ghost.example.com
          database__client: mysql
          database__connection__host: ghost-db
          database__connection__user: ghost
          database__connection__password: ghostdbpass
          database__connection__database: ghostdb
          mail__transport: SMTP
          mail__options__host: {Your Mail Service host}
          mail__options__port: {Your Mail Service port}
          mail__options__secureConnection: {true/false}
          mail__options__service: {Your Mail Service}
          mail__options__auth__user: {Your User Name}
          mail__options__auth__pass: {Your Password}
        volumes:
          - /home/<username>/ghost/content:/var/lib/ghost/content
        networks:
          - npm-nw
          - ghost-network
    
      ghost-db:
        image: mariadb:latest
        container_name: ghost-db
        restart: always
        environment:
          MYSQL_ROOT_PASSWORD: your_mysql_root_password
          MYSQL_USER: ghost
          MYSQL_PASSWORD: ghostdbpass
          MYSQL_DATABASE: ghostdb
        volumes:
          - /home/<username>/ghost/mysql:/var/lib/mysql
        networks:
          - ghost-network
    
    networks:
      ghost-network:
      npm-nw: 
        external: true
    

    Ctrl + X를 누르고 메시지가 표시되면 Y를 입력하여 파일을 저장합니다.

    보시다시피 외부 네트워크 npm-nw를 사용하여 Ghost 컨테이너를 Nginx 프록시 관리자와 연결했습니다. 이렇게 하면 Ghosts 포트가 시스템에 노출되지 않습니다. 또한 내부 네트워크 ghost-network를 사용하여 Ghost 앱과 해당 데이터베이스 컨테이너를 연결했습니다.

    컨테이너를 시작합니다.

    $ docker-compose up -d
    

    Nginx 프록시 관리자에서 Ghost 구성

    이제 Ghost 설치를 위해 리버스 프록시를 설정해야 합니다. 브라우저에서 Nginx 프록시 관리자를 열고 대시보드 >> 호스트 >> 프록시 호스트로 이동하여 새 프록시 호스트를 추가합니다.

    Ghost 블로그에 대해 선택한 도메인 이름을 추가합니다. 호스트 이름/IP 값에 컨테이너 이름을 입력합니다. 이 경우 ghost-app입니다. Ghosts 포트를 서버에 노출하지 않았고 Nginx 프록시가 IP를 통해 Ghost에 연결할 수 없기 때문에 여기에 IP 주소를 추가할 수 없습니다. 따라서 NPM이 우리가 만든 Dockers 네트워크 npm-nw를 사용하여 액세스할 수 있는 컨테이너 이름을 사용합니다. Ghost Blog에서 사용하는 기본 포트인 2368을 포트로 사용하십시오. 위의 스크린샷에 표시된 대로 다른 옵션을 확인합니다.

    그런 다음 SSL 탭으로 전환하고 6단계에 따라 새 SSL 인증서를 만듭니다. Ghost 블로그에 콘텐츠를 업로드할 것이므로 업로드에 대한 최대 업로드 크기를 설정하는 것이 좋습니다.

    다행스럽게도 NPM을 사용하면 사용자 지정 구성을 추가할 수 있습니다. 고급 탭으로 전환하고 상자에 client_max_body_size 50m;를 입력합니다.

    저장 버튼을 클릭하여 프록시 호스트 추가를 완료합니다. URL https://ghost.exampl.com을 통해 Ghost 블로그에 액세스할 수 있어야 합니다.

    9단계 - Nginx Proxy Manager를 리디렉션 서비스로 사용

    NPM을 사용하여 한 도메인을 다른 도메인으로 쉽게 리디렉션하는 방법을 살펴보겠습니다. 이렇게 하려면 대시보드 >> 호스트 >> 리디렉션 호스트를 방문하십시오. 여기에서 리디렉션 호스트 추가 버튼을 클릭하여 시작합니다.

    전달할 도메인 이름을 입력합니다. 그리고 포워딩 도메인을 입력합니다. 전달 도메인이 이미 구성되어 있어야 합니다. 구성표를 자동으로 둡니다. 요구 사항에 따라 http 또는 https를 선택할 수 있습니다. 올바른 HTTP 코드를 선택하고 경로 유지 및 일반적인 공격 차단 옵션을 확인하십시오. 자동 또는 https 체계를 사용하는 경우 NPM을 사용하여 SSL 인증서를 선택하거나 생성했는지 확인하십시오. 저장을 클릭하여 리디렉션 호스트 추가를 마칩니다.

    도메인 example.comblog.example.com으로 리디렉션되기 시작해야 합니다.

    Nginx 프록시 관리자의 다른 용도

    Nginx 프록시 관리자를 사용할 수 있는 다른 두 가지 방법이 있습니다. 404 호스트로 사용할 수 있습니다. 즉, 도메인을 방문 페이지로 사용하여 도메인 페이지가 존재하지 않는다는 것을 검색 엔진에 표시할 수 있습니다. 이 단계에는 도메인 입력 및 SSL 설정이 포함됩니다. 이를 도메인 이름에 대한 로그를 추적하고 리퍼러 트래픽을 볼 수 있는 기회로 사용할 수도 있습니다.

    다른 기능은 NPM을 스트림 호스트로 사용하는 것입니다. 이 기능을 사용하여 TCP/UDP 포트를 네트워크의 다른 컴퓨터로 전달할 수 있습니다. 이는 게임 서버를 호스팅하는 경우에 유용합니다. 수신 포트, 전달 도메인 또는 IP 주소, 전달 포트를 입력하고 포트 유형을 선택하기만 하면 됩니다.

    Nginx 프록시 관리자를 사용하여 정적 웹 사이트 호스팅

    Nginx Proxy Manager는 간단한 정적 또는 동적 웹사이트도 호스팅할 수 있습니다. 이렇게 하려면 새 프록시 호스트를 추가하고 Forward 도메인으로 127.0.0.1을 선택하고 포트로 80을 선택합니다.

    고급 탭에서 루트 디렉토리를 지정하는 구성을 입력하십시오. 사이트의 루트 디렉토리가 초기 Docker 작성 구성에 마운트되어 있는지 확인하십시오. 여기에서는 /data/static 디렉토리를 사용하여 정적 웹 사이트를 호스팅합니다.

    저장을 클릭하여 완료하면 사이트에 액세스할 수 있습니다. 마찬가지로 프록시 관리자를 사용하여 모든 유형의 사이트를 호스팅할 수 있습니다.

    10단계 - 기타 기능

    Nginx 프록시 관리자 액세스 제어 기능 사용

    NPM의 액세스 목록 기능을 사용하여 HTTP 인증을 활성화하거나 IP 범위를 차단할 수 있습니다. NPM을 열고 대시보드 >> 액세스 목록 페이지를 방문하십시오.

    시작하려면 액세스 목록 추가 버튼을 클릭하십시오.

    액세스 목록(ACL) 구성의 이름을 지정할 수 있습니다. Satisfy Any(모두 충족) 탭을 선택하면 클라이언트가 지정된 조건 중 하나를 충족하는 경우 액세스가 허용됩니다. 클라이언트가 HTTP 인증을 통과했지만 IP 기반 액세스에 실패할 수 있는 경우 허용됩니다. 그러나 Satisfy Any 옵션이 선택되지 않은 경우 클라이언트는 모든 조건을 충족해야 합니다.

    Pass Auth to Host 기능은 인증 기능을 호스트 서버로 전달합니다.

    그런 다음 인증 탭으로 전환합니다. 여기에서 HTTP 인증 방법에 대한 사용자 이름과 비밀번호를 생성할 수 있습니다. 한 명 이상의 사용자를 추가하려면 추가 버튼을 클릭합니다. 최대 5명의 사용자만 추가할 수 있습니다. 그리고 추가 버튼에 버그가 있으니 버튼을 먼저 사용하신 후 내용을 입력해주세요. 세부 정보를 입력하고 나중에 다른 사용자를 추가하기 위해 버튼을 클릭하면 이전 사용자 데이터가 지워집니다.

    액세스 탭으로 전환합니다. 여기에서 액세스를 제공하거나 거부할 IP 주소를 설정할 수 있습니다.

    저장을 클릭하여 마칩니다.

    이 액세스 목록을 사용하려면 프록시 호스트를 추가할 때 선택해야 합니다. 아래 Ghost Blog의 예에서와 같이 액세스 목록을 선택했습니다.

    더 많은 도메인 이름에 대한 지원 활성화

    호스트 및 도메인 수가 증가함에 따라 Nginx의 해시 공간이 부족하거나 메모리 문제가 발생할 수 있습니다. 이 문제를 해결하기 위해 모든 호스트에 적용할 사용자 지정 구성을 추가할 수 있습니다.

    이렇게 하려면 ~/nginx-proxy/data/nginx 내부에 사용자 정의 디렉터리를 만듭니다.

    $ sudo mkdir ~/nginx-proxy/data/nginx/custom
    

    이 디렉터리 안에 http.conf 파일을 만들고 엽니다.

    $ sudo nano ~/nginx-proxy/data/nginx/custom/http.conf
    

    다음 줄을 붙여넣습니다.

    proxy_headers_hash_max_size 1024;
    proxy_headers_hash_bucket_size 128;
    

    Ctrl + X를 누르고 메시지가 표시되면 Y를 입력하여 파일을 저장합니다.

    Nginx는 이러한 값을 자동으로 수락해야 합니다. 그렇지 않은 경우 다음 명령을 사용하여 NPM 컨테이너를 다시 시작할 수 있습니다.

    $ docker restart npm-app
    

    기본 방문 페이지 리디렉션

    6단계에서 URL http://를 입력하면 기본 페이지가 표시됩니다. 그것을 바꾸고 싶다면 그렇게 할 수 있습니다. 그렇게 하려면 설정 페이지를 방문하십시오. 오른쪽에 있는 세 개의 점을 클릭하고 편집 버튼을 클릭합니다.

    사용자 지정 페이지 옵션을 사용하여 랜딩 페이지를 404 페이지로 설정하거나, 페이지를 리디렉션하거나, 사용자 지정 HTML을 추가할 수 있습니다. 리디렉션을 선택하면 대상 URL을 지정해야 합니다.

    이것은 우리의 목적을 위해 사용한 사용자 지정 HTML입니다.

    <!doctype html>
    <html>
      <head>
        <title>Nothing Here</title>
        <meta charset="utf-8"/>
        <meta name="robots" content="noindex"/>
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <style>
          body { 
              text-align: center; 
              padding: 20px; 
              font: 20px Helvetica, sans-serif; 
              color: #333; 
            }
          @media (min-width: 768px){
              body{ padding-top: 150px; 
            }
          }
          h1 { 
              font-size: 50px; 
            }
          article { 
              display: block; 
              text-align: left; 
              max-width: 650px; 
              margin: 0 auto; 
            }
        </style>
      </head>
      <body>
        <article>
            <h1>Oops!</h1>
            <div>
                <p>Sorry for the inconvenience but you are not supposed to be here. You won't get anything here. This page was set for HowtoForge Nginx Proxy Manager Guide.  Maybe, someday it will show something.</p>
            </div>
        </article>
      </body>
    </html>
    

    저장을 클릭하여 마칩니다. 방문 페이지는 아래와 같이 변경되어야 합니다.

    11단계 - Nginx 프록시 관리자 업데이트

    NPM을 업데이트하려면 먼저 컨테이너를 중지합니다.

    $ cd ~/nginx-proxy
    $ docker-compose down --remove-orphans
    

    최신 이미지를 가져옵니다.

    $ docker-compose pull
    

    컨테이너를 다시 시작하십시오.

    $ docker-compose up -d
    

    결론

    이것으로 Nginx 프록시 관리자를 설치하고 이를 사용하여 다른 도커 컨테이너에 대한 프록시 호스트를 추가하고 리디렉션 서비스로 사용하고 이를 사용하여 액세스를 제어하는 방법을 배운 자습서를 마칩니다. 질문이 있으시면 아래 의견에 게시하십시오.