Wymagania wstępne:
- ogólna wiedza o docker
- zainstalowany docker compose
- dostępne porty z zewnątrz 80 i 443
- 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
- Pobieranie szablonu
git clone https://github.com/scypionxp/nginx-wiele-stron-z-ssl-na-jednym-serwerze /srv/www
- 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
- Usuwanie starego
rm -rf /srv/www/nginx-proxy/nginx.tmpl
- Pobieranie nowego
curl -s https://raw.githubusercontent.com/jwilder/nginx-proxy/master/nginx.tmpl> /srv/www/nginx-proxy/nginx.tmpl
- 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
- 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://olex.biz/2019/09/hosting-with-docker-nginx-reverse-proxy-letsencrypt/
kilka innych stron, aby zaktualizować zmiany w budowie pliku docker-compose.yml