เดฒเดฟเดจเด•เตเดธเดฟเตฝ เดกเต‹เด•เตเด•เตผ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดฒเต†เดฑเตเดฑเตเดธเต†เตปเด•เตเดฐเดฟเดชเตเดฑเตเดฑเต เดธเตผเดŸเตเดŸเดฟเดซเดฟเด•เตเด•เดฑเตเดฑเตเด•เดณเตเดŸเต† เดธเตเดตเดฏเดฎเต‡เดตเดฏเตเดณเตเดณ เดฐเดธเต€เดคเต เดธเดœเตเดœเต€เด•เดฐเดฟเด•เตเด•เตเดจเตเดจเต

เดžเดพเตป เด…เดŸเตเดคเตเดคเดฟเดŸเต† เดตเต†เตผเดšเตเดตเตฝ เดธเต†เตผเดตเตผ เดฎเดพเดฑเตเดฑเดฟ, เดŽเดฒเตเดฒเดพเด‚ เดตเต€เดฃเตเดŸเตเด‚ เด•เต‹เตบเดซเดฟเด—เตผ เดšเต†เดฏเตเดฏเต‡เดฃเตเดŸเดฟเดตเดจเตเดจเต. https เดตเดดเดฟ เดธเตˆเดฑเตเดฑเต เด†เด•เตโ€Œเดธเดธเต เดšเต†เดฏเตเดฏเดพเดจเตเด‚ เดŽเตปเด•เตเดฐเดฟเดชเตเดฑเตเดฑเต เดธเตผเดŸเตเดŸเดฟเดซเดฟเด•เตเด•เดฑเตเดฑเตเด•เตพ เดธเตเดตเดฏเดฎเต‡เดต เดจเต‡เดŸเดพเดจเตเด‚ เดชเตเดคเตเด•เตเด•เดพเดจเตเด‚ เดžเดพเตป เด†เด—เตเดฐเดนเดฟเด•เตเด•เตเดจเตเดจเต. 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

เด…เดŸเตเดคเตเดค เด˜เดŸเตเดŸเด‚ เดกเต‹เด•เตเด•เตผ-เด•เดฎเตเดชเต‹เดธเต เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดฏเตเด• เดŽเดจเตเดจเดคเดพเดฃเต. เดฏเต‚เดŸเตเดŸเดฟเดฒเดฟเดฑเตเดฑเดฟ เดชเดฒ เดคเดฐเดคเตเดคเดฟเตฝ เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดฏเดพเตป เด•เดดเดฟเดฏเตเด‚, เดชเด•เตเดทเต‡ เด…เดจเดพเดตเดถเตเดฏ เดชเดพเด•เตเด•เต‡เดœเตเด•เตพ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดธเดฟเดธเตเดฑเตเดฑเด‚ เด…เดฒเด™เตเด•เต‹เดฒเดชเตเดชเต†เดŸเตเดคเตเดคเดพเดคเดฟเดฐเดฟเด•เตเด•เดพเตป, เดชเตˆเดชเตเดชเต เดฎเดพเดจเต‡เดœเตผ, virtualenv เดŽเดจเตเดจเดฟเดตเดฏเดฟเดฒเต‚เดŸเต† เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดฏเดพเตป เดžเดพเตป เด†เด—เตเดฐเดนเดฟเด•เตเด•เตเดจเตเดจเต.

  1. เดชเตˆเดชเตเดชเต เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดฏเตเด•
    $ sudo yum install python-pip
  2. virtualenv เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดฏเตเด•
    $ 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 เดฒเต†เดฑเตเดฑเตเดธเต†เตปเด•เตเดฐเดฟเดชเตเดฑเตเดฑเต เด•เดฃเตเดŸเต†เดฏเตเดจเดฑเดฟเดจเต เดชเตเดฐเต‹เด•เตเดธเดฟ เด•เดฃเตเดŸเต†เดฏเตเดจเตผ เด•เดพเดฃเต‡เดฃเตเดŸเดคเต เด…เดคเตเดฏเดพเดตเดถเตเดฏเดฎเดพเดฃเต. /etc/nginx/certs /etc/nginx/vhost.d, /usr/share/nginx/html เดซเต‹เตพเดกเดฑเตเด•เตพ เดฐเดฃเตเดŸเต เด•เดฃเตเดŸเต†เดฏเตโ€Œเดจเดฑเตเด•เดณเตเด‚ เดชเด™เตเด•เดฟเดŸเดฃเด‚. เดฒเต†เดฑเตเดฑเตโ€Œเดธเต†เตปเด•เตเดฐเดฟเดชเตเดฑเตเดฑเต เด•เดฃเตเดŸเต†เดฏเตโ€Œเดจเตผ เดถเดฐเดฟเดฏเดพเดฏเดฟ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต, เดชเต‹เตผเดŸเตเดŸเต 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

เด’เดฐเต เด…เดญเดฟเดชเตเดฐเดพเดฏเด‚ เดšเต‡เตผเด•เตเด•เตเด•