Docker – strona www z szyfrowaniem ssl

wpis w: Uncategorized | 0

Wymagania wstępne:

  • ogólna wiedza o docker
  • zainstalowany docker compose
  • dostępne porty z zewnątrz 80 i 443

  1. Tworzenie katalogów
  • Tworzenie katalogu dla stron

sudo mkdir -p /srv/www

  • Ustawienie naszego użytkownika jako właściciela

sudo chown -R mojuzytkownik /srv/www

  • Ustawienie web servera jako właściciela grupy

sudo chgrp -R www-data /srv/www

  • Ustawienie permisji dostępu 755 dla wszystkiego

sudo chmod -R 755 /srv/www

  • Nowe pliki i katalogi dziedziczą uprawnienia grupy z nadrzędnego katalogu

chmod g+s /srv/www

  1. Pobieranie szablonu

git clone https://github.com/scypionxp/nginx-wiele-stron-z-ssl-na-jednym-serwerze /srv/www

  1. Sprawdź strukturę projektu i pliki konfiguracyjne.

www

├── README.Rmd

├── README.md

├── nginx-proxy

│   ├── certs

│   ├── conf.d

│   ├── docker-compose.yml

│   ├── html

│   ├── nginx.tmpl

│   └── vhost.d

├── your-website-one.com

│   ├── docker-compose.yml

│   └── index.html

└── your-website-two.com

├── docker-compose.yml

└── index.html

 

Zaktualizuj szablon pliku konfiguracyjnego nginx.tmpl

  1. Usuwanie starego

rm -rf /srv/www/nginx-proxy/nginx.tmpl

  1. Pobieranie nowego

curl -s https://raw.githubusercontent.com/jwilder/nginx-proxy/master/nginx.tmpl> /srv/www/nginx-proxy/nginx.tmpl

  1. Uruchom nginx reverse proxy
  • Tworzenie sieci wewnętrznej dockera

docker network create nginx-proxy

  • Uruchomienie reverse proxy

cd /srv/www/nginx-proxy/

docker-compose up -d

  1. Połącz stronę internetową z działającym serwerem nginx-proxy

Plik docker-compose.yml powinien wyglądać następująco:

version: '3.6′

 

services:

my-app:

image: nginx

restart: always

volumes:

– „./:/usr/share/nginx/html”

environment:

# NGINX-PROXY ENVIRONMENT VARIABLES: UPDATE ME

– VIRTUAL_HOST=your-website-one.com

– VIRTUAL_PORT=80

– LETSENCRYPT_HOST=your-website-one.com

– LETSENCRYPT_EMAIL=your.email@domain.com

# /END NGINX-PROXY ENVIRONMENT VARIABLES

expose:

– 80

 

networks:

default:

name: nginx-proxy

external: true

 

Ważne informacje:

  • VIRTUAL_HOST: nazwa twojej domeny, używana w konfiguracji nginx
  • VIRTUAL_PORT: (opcjonalnie) port na którym nasłuchuje twoja strona (domyślnie to 80).
  • LETSENCRYPT_HOST: nazwa twojej domeny, używana w konfiguracji Let’s Encrypt
  • LETSENCRYPT_EMAIL: twój e-mail, używany w konfiguracji Let’s Encrypt
  • Port wystawiony na zewnątrz (tutaj 80) powinien być taki sam jak VIRTUAL_PORT powyżej
  • Kontener z twoją stroną powinien być zlinkowany do zewnętrznej sieci docker o nazwie nginx-proxy

Po zaktualizowaniu pliku docker-compose.yml wystartuj stronę:

cd /srv/www/your-website-one.com

docker-compose up -d

Strona zostanie automatycznie wykryta przez reverse proxy, ma certyfikat HTTPS i powinna być widoczna pod adresem https://your-website-one.com.

 

Dla pozostałych stron robimy analogicznie.

 

Źródła:

https://www.datanovia.com/en/lessons/how-host-multiple-https-websites-on-one-server/

https://francoisromain.medium.com/host-multiple-websites-with-https-inside-docker-containers-on-a-single-server-18467484ab95

https://olex.biz/2019/09/hosting-with-docker-nginx-reverse-proxy-letsencrypt/

kilka innych stron, aby zaktualizować zmiany w budowie pliku docker-compose.yml