เชฒเชฟเชจเช•เซเชธ เชชเชฐ เชกเซ‹เช•เชฐเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ letsencrypt เชชเซเชฐเชฎเชพเชฃเชชเชคเซเชฐเซ‹เชจเซ€ เชธเซเชตเชšเชพเชฒเชฟเชค เชฐเชธเซ€เชฆ เชธเซ‡เชŸ เช•เชฐเซ€ เชฐเชนเซเชฏเซเช‚ เช›เซ‡

เชฎเซ‡เช‚ เชคเชพเชœเซ‡เชคเชฐเชฎเชพเช‚ เชตเชฐเซเชšเซเชฏเซเช…เชฒ เชธเชฐเซเชตเชฐ เชฌเชฆเชฒเซเชฏเซเช‚ เช›เซ‡, เช…เชจเซ‡ เชฌเชงเซเช‚ เชซเชฐเซ€เชฅเซ€ เช—เซ‹เช เชตเชตเซเช‚ เชชเชกเซเชฏเซเช‚. เชนเซเช‚ เชชเชธเช‚เชฆ เช•เชฐเซเช‚ เช›เซเช‚ เช•เซ‡ เชธเชพเช‡เชŸ https เชฆเซเชตเชพเชฐเชพ เชเช•เซเชธเซ‡เชธเชฟเชฌเชฒ เชนเซ‹เชฏ เช…เชจเซ‡ letsencrypt เชชเซเชฐเชฎเชพเชฃเชชเชคเซเชฐเซ‹ เชฎเซ‡เชณเชตเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช…เชจเซ‡ เช†เชชเชฎเซ‡เชณเซ‡ เชจเชตเซ€เช•เชฐเชฃ เชฅเชพเชฏ. เช† เชฌเซ‡ เชกเซ‹เช•เชฐ เชˆเชฎเซ‡เชœเซ‹ nginx-proxy เช…เชจเซ‡ nginx-proxy-companion เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชชเซเชฐเชพเชชเซเชค เช•เชฐเซ€ เชถเช•เชพเชฏ เช›เซ‡.

เช† เชเช• เชชเซเชฐเซ‹เช•เซเชธเซ€ เชธเชพเชฅเซ‡ เชกเซ‹เช•เชฐ เชชเชฐ เชตเซ‡เชฌเชธเชพเช‡เชŸ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชธเซ‡เชŸ เช•เชฐเชตเซ€ เชคเซ‡ เช…เช‚เช—เซ‡เชจเซ€ เชฎเชพเชฐเซเช—เชฆเชฐเซเชถเชฟเช•เชพ เช›เซ‡ เชœเซ‡ เช†เชชเชฎเซ‡เชณเซ‡ SSL เชชเซเชฐเชฎเชพเชฃเชชเชคเซเชฐเซ‹ เชฎเซ‡เชณเชตเซ‡ เช›เซ‡. CentOS 7 เชตเชฐเซเชšเซเชฏเซเช…เชฒ เชธเชฐเซเชตเชฐเชจเซ‹ เช‰เชชเชฏเซ‹เช— เชฅเชพเชฏ เช›เซ‡.

เชนเซเช‚ เชงเชพเชฐเซเช‚ เช›เซเช‚ เช•เซ‡ เชธเชฐเซเชตเชฐ เชชเชนเซ‡เชฒเซ‡เชฅเซ€ เชœ เช–เชฐเซ€เชฆเชพเชฏเซ‡เชฒเซเช‚ เช›เซ‡, เช—เซ‹เช เชตเซ‡เชฒเซเช‚ เช›เซ‡, เช•เซ€เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชฒเซ‰เช— เช‡เชจ เช•เชฐเซ‡เชฒเซเช‚ เช›เซ‡, fail2ban เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเซ‡เชฒเซเช‚ เช›เซ‡, เชตเช—เซ‡เชฐเซ‡.

เชชเซเชฐเชฅเชฎ เชคเชฎเชพเชฐเซ‡ เชกเซ‹เช•เชฐ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡.

  1. เชชเซเชฐเชฅเชฎ เชคเชฎเชพเชฐเซ‡ เชจเชฟเชฐเซเชญเชฐเชคเชพ เชธเซเชฅเชพเชชเชฟเชค เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡
    $ sudo yum install -y yum-utils  device-mapper-persistent-data lvm2
  2. เชฐเซ€เชชเซ‹เชเซ€เชŸเชฐเซ€ เช•เชจเซ‡เช•เซเชŸ เช•เชฐเซ‹
    $ sudo yum-config-manager  --add-repo  https://download.docker.com/linux/centos/docker-ce.repo
  3. เชชเช›เซ€ เชกเซ‹เช•เชฐ เช•เซ‹เชฎเซเชฏเซเชจเชฟเชŸเซ€ เชเชกเชฟเชถเชจ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเซ‹
    $ sudo yum install docker-ce docker-ce-cli containerd.io
  4. เชธเซเชŸเชพเชฐเซเชŸเช…เชช เช…เชจเซ‡ เชฐเชจเชฎเชพเช‚ เชกเซ‹เช•เชฐ เช‰เชฎเซ‡เชฐเซ‹
    $ sudo systemctl enable docker
    $ sudo systemctl start docker
  5. เชธเซเชกเซ‹ เชตเชฟเชจเชพ เชกเซ‹เช•เชฐ เชšเชฒเชพเชตเชตเชพ เชฎเชพเชŸเซ‡ เชธเช•เซเชทเชฎ เชฅเชตเชพ เชฎเชพเชŸเซ‡ เชกเซ‹เช•เชฐ เชœเซ‚เชฅเชฎเชพเช‚ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพ เช‰เชฎเซ‡เชฐเซ‹
    $ usermod -aG docker user

เช†เช—เชณเชจเซเช‚ เชชเช—เชฒเซเช‚ เชกเซ‹เช•เชฐ-เช•เช‚เชชเซ‹เช เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเชตเชพเชจเซเช‚ เช›เซ‡. เชฏเซเชŸเชฟเชฒเชฟเชŸเซ€ เช˜เชฃเซ€ เชฐเซ€เชคเซ‡ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเซ€ เชถเช•เชพเชฏ เช›เซ‡, เชชเชฐเช‚เชคเซ เชนเซเช‚ เชชเชพเช‡เชช เชฎเซ‡เชจเซ‡เชœเชฐ เช…เชจเซ‡ เชตเชฐเซเชšเซเชฏเซเช…เชฒเซ‡เชจเชต เชฆเซเชตเชพเชฐเชพ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเชตเชพเชจเซเช‚ เชชเชธเช‚เชฆ เช•เชฐเซเช‚ เช›เซเช‚, เชœเซ‡เชฅเซ€ เชฌเชฟเชจเชœเชฐเซ‚เชฐเซ€ เชชเซ‡เช•เซ‡เชœเซ‹ เชธเชพเชฅเซ‡ เชธเชฟเชธเซเชŸเชฎเชฎเชพเช‚ เช—เชกเชฌเชก เชจ เชฅเชพเชฏ.

  1. เชชเชพเช‡เชช เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเซ‹
    $ sudo yum install python-pip
  2. เชตเชฐเซเชšเซเชฏเซเช…เชฒเซ‡เชจเชต เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเซ‹
    $ pip install virtualenv
  3. เช†เช—เชณ เชคเชฎเชพเชฐเซ‡ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸ เชธเชพเชฅเซ‡ เชซเซ‹เชฒเซเชกเชฐ เชฌเชจเชพเชตเชตเชพเชจเซ€ เช…เชจเซ‡ เชคเซ‡เชจเซ‡ เชชเซเชฐเชพเชฐเช‚เชญ เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡. เชคเชฎเชจเซ‡ เชชเซ‡เช•เซ‡เชœเซ‹ เชฎเซ‡เชจเซ‡เชœ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชœเชฐเซ‚เชฐเซ€ เชฆเชฐเซ‡เช• เชตเชธเซเชคเซ เชธเชพเชฅเซ‡เชจเซเช‚ เชซเซ‹เชฒเซเชกเชฐ ve เช•เชนเซ‡เชตเชพเชถเซ‡.
    $ mkdir docker
    $ cd docker
    $ virtualenv ve
  4. เชตเชฐเซเชšเซเชฏเซเช…เชฒ เชชเชฐเซเชฏเชพเชตเชฐเชฃเชจเซ‹ เช‰เชชเชฏเซ‹เช— เชถเชฐเซ‚ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, เชคเชฎเชพเชฐเซ‡ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸ เชซเซ‹เชฒเซเชกเชฐเชฎเชพเช‚ เชจเซ€เชšเซ‡เชจเซ‹ เช†เชฆเซ‡เชถ เชšเชฒเชพเชตเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡.
    $ source ve/bin/activate
  5. เชคเชฎเซ‡ เชกเซ‹เช•เชฐ-เช•เช‚เชชเซ‹เช เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹.
    pip install docker-compose

    เช•เชจเซเชŸเซ‡เชจเชฐ เชเช•เชฌเซ€เชœเชพเชจเซ‡ เชœเซ‹เชˆ เชถเช•เซ‡ เชคเซ‡ เชฎเชพเชŸเซ‡, เช…เชฎเซ‡ เชจเซ‡เชŸเชตเชฐเซเช• เชฌเชจเชพเชตเซ€เชถเซเช‚. เชฎเซ‚เชณเชญเซ‚เชค เชฐเซ€เชคเซ‡, เชฌเซเชฐเชฟเชœ เชกเซเชฐเชพเช‡เชตเชฐเชจเซ‹ เช‰เชชเชฏเซ‹เช— เชฅเชพเชฏ เช›เซ‡.

    $ docker network create network

    เช†เช—เชณ เชคเชฎเชพเชฐเซ‡ เชกเซ‹เช•เชฐ-เช•เช‚เชชเซ‹เช เช—เซ‹เช เชตเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡, เชชเซเชฐเซ‹เช•เซเชธเซ€ เชชเซเชฐเซ‹เช•เซเชธเซ€ เชซเซ‹เชฒเซเชกเชฐเชฎเชพเช‚ เชนเชถเซ‡, เชŸเซ‡เชธเซเชŸ เชธเชพเช‡เชŸ เชŸเซ‡เชธเซเชŸ เชซเซ‹เชฒเซเชกเชฐเชฎเชพเช‚ เชนเชถเซ‡. เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เชนเซเช‚ เชกเซ‹เชฎเซ‡เชจ เชจเชพเชฎ example.com เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซเช‚ เช›เซเช‚

    $ mkdir proxy
    $ mkdir test
    $ touch proxy/docker-compose.yml
    $ touch test/docker-compose.yml

    เชธเชพเชฎเช—เซเชฐเซ€ proxy/docker-compose.yml

    version: '3'
    
    networks:
      default:
        external:
          name: network
    
    services:
      nginx-proxy:
        container_name: nginx-proxy
        image: jwilder/nginx-proxy
        ports:
          - 80:80
          - 443:443
        volumes:
          - certs:/etc/nginx/certs
          - vhost.d:/etc/nginx/vhost.d
          - html:/usr/share/nginx/html
          - /var/run/docker.sock:/tmp/docker.sock:ro
    
      nginx-proxy-letsencrypt:
        container_name: nginx-proxy-letsencrypt
        image: jrcs/letsencrypt-nginx-proxy-companion
        volumes: 
          - certs:/etc/nginx/certs
          - vhost.d:/etc/nginx/vhost.d
          - html:/usr/share/nginx/html
          - /var/run/docker.sock:/var/run/docker.sock:ro
        environment:
          - NGINX_PROXY_CONTAINER=nginx-proxy
    
    volumes:
      certs:
      vhost.d:
      html:

    เชชเชฐเซเชฏเชพเชตเชฐเชฃ เชšเชฒ NGINX_PROXY_CONTAINER เชคเซ‡ letsencrypt เช•เชจเซเชŸเซ‡เชจเชฐ เชฎเชพเชŸเซ‡ เชชเซเชฐเซ‹เช•เซเชธเซ€ เช•เชจเซเชŸเซ‡เชจเชฐ เชœเซ‹เชตเชพ เชฎเชพเชŸเซ‡ เชœเชฐเซ‚เชฐเซ€ เช›เซ‡. /etc/nginx/certs /etc/nginx/vhost.d เช…เชจเซ‡ /usr/share/nginx/html เชซเซ‹เชฒเซเชกเชฐเซเชธ เชฌเช‚เชจเซ‡ เช•เชจเซเชŸเซ‡เชจเชฐ เชฆเซเชตเชพเชฐเชพ เชถเซ‡เชฐ เช•เชฐเชตเชพ เช†เชตเชถเซเชฏเช• เช›เซ‡. letsencrypt เช•เชจเซเชŸเซ‡เชจเชฐ เชฏเซ‹เช—เซเชฏ เชฐเซ€เชคเซ‡ เช•เชพเชฎ เช•เชฐเซ‡ เชคเซ‡ เชฎเชพเชŸเซ‡, เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชชเซ‹เชฐเซเชŸ 80 เช…เชจเซ‡ 443 เชฌเช‚เชจเซ‡ เชชเชฐ เชธเซเชฒเชญ เชนเซ‹เชตเซ€ เชœเซ‹เชˆเช.

    เชธเชพเชฎเช—เซเชฐเซ€ test/docker-compose.yml

    version: '3'
    
    networks:
      default:
        external:
          name: network
    
    services:
    
      nginx:
        container_name: nginx
        image: nginx:latest
        environment:
          - VIRTUAL_HOST=example.com
          - LETSENCRYPT_HOST=example.com
          - [email protected]

    เช…เชนเซ€เช‚, เชชเชฐเซเชฏเชพเชตเชฐเชฃ เชšเชฒเซ‹ เชœเชฐเซ‚เชฐเซ€ เช›เซ‡ เชœเซ‡เชฅเซ€ เชชเซเชฐเซ‹เช•เซเชธเซ€ เชธเชฐเซเชตเชฐ เชชเชฐ เชตเชฟเชจเช‚เชคเซ€เชจเซ‡ เชฏเซ‹เช—เซเชฏ เชฐเซ€เชคเซ‡ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เช•เชฐเซ‡ เช…เชจเซ‡ เชธเชพเชšเชพ เชกเซ‹เชฎเซ‡เชจ เชจเชพเชฎ เชฎเชพเชŸเซ‡ เชชเซเชฐเชฎเชพเชฃเชชเชคเซเชฐเชจเซ€ เชตเชฟเชจเช‚เชคเซ€ เช•เชฐเซ‡.

    เชœเซ‡ เชฌเชพเช•เซ€ เช›เซ‡ เชคเซ‡ เชกเซ‹เช•เชฐ-เช•เช‚เชชเซ‹เช เชšเชฒเชพเชตเชตเชพเชจเซเช‚ เช›เซ‡

    $ cd proxy
    $ docker-compose up -d
    $ cd ../test
    $ docker-compose up -d

เชธเซ‹เชฐเซเชธ: www.habr.com

เชเช• เชŸเชฟเชชเซเชชเชฃเซ€ เช‰เชฎเซ‡เชฐเซ‹