Nginx е уеб сървър, който се използва за обработка на уеб заявки и сервиране на уеб съдържание към потребителите. Той е изключително бърз и много мащабируем, като може да обслужва големи количества заявки и да бъде мащабиран до много сървъри. Nginx е софтуер с отворен код, който може да бъде инсталиран на различни операционни системи и да бъде използван за управление на уеб сайтове и приложения.
Nginx (Ubuntu 22.04)
- Операционна система: ubuntu 22
Описание
Включен софтуер
Пакет | Версия |
---|---|
Nginx | 1.23 |
Docker | 3.20.10 |
Docker compose | 2.12.2 |
containerd.io | 1.6.10 |
Първоначално стартиране на услугата
Това приложение използва Docker, за да осигури по-бързо стартиране на прилежащия софтуер (Nginx) и директно започване на употребата му. По този начин се елиминира нуждата от запознаване със спецификите му по отношение на конфигурация и инсталация. За да започнете директна работа с приложението, единственото, което трябва да направите е да качите своето съдържание, което желаете да се обслужва от Nginx в директорията /opt/nginx/data/
. След като извършите това, можете да посетите IP адреса, който е назначен за виртуалната Ви машина в бразура си, за да видите съдържанието, което сте качили.
Забележка: По подразбиране, Nginx може да се достъпи директно по IP адрес. За да започнете да използвате Nginx с реалния си домейн, първо трябва да насочите въпросния домейн към IP адреса си и да промените настройките за това от къде се отваря Nginx през неговия административен панел.
Бързи настройкии и често задавани въпроси
- Входът в клауд услугата се извършва посредством SSH ключ или парола, която сте посочили.
- Docker е инсталиран според препоръките от официалната docker документация.
- Стандартните команди
docker
иdocker compose
са вече достъпни в това приложение. - При първо стартиране на виртуалната машина, отнема няколко минути, преди да се стартира Docker контейнер, съдържащ Nginx.
- Nginx data се намира в
/opt/nginx/data/
. - По подразбиране, Nginx стартира работа върху всички налични интерфейси на машината. Портовете за достъп до Nginx са 80 и 443.
Добавяне на статичен сайт
Този application образ е вътрешно е организиран по такъв начин, че вътрешно зарежда каченото му съдържание от директория /app
. Каченото съдържание се зарежда от Nginx default vhost (cath-all) сървърен блок. Тоест, за да качите статичен сайт, който да се обслужва от Nginx то просто трябва да качите съдържанието си в директоряита /opt/nginx/data/
, която е предефинирана от нас. Тя е свързана с вътрешната docker директория /app
. Разбира се, ако желаете винаги можете да измените директорията, в която качвате съдържанието си. За целта трябва да изпълните следните стъпки
Стъпка 1 - създайте директорията, която да обслужва сайта ви
mkdir /path/to/your/app
Стъпка 2 - модифицирайте docker-compose.yml файла и рестартирайте docker
cd /opt/docker-nginx/
vi docker-compose.yml
- Редактирайте docker-compose.yml, който трябва да изглежда по следния начин, като промените
/path/to/your/app
с пътя, който желаете:
---
version: '2'
services:
nginx:
image: docker.io/bitnami/nginx:1.23
ports:
- '80:8080'
- '443:8443'
volumes:
- /path/to/your/app:/app
Добавяне на собствени Nginx vhost конфигурации
По подразбиране, главният nginx.conf файл зарежда всички конфигурационни файлове, поставени във вътрешната /opt/bitnami/nginx/conf/server_blocks/
docker директория. Ако създадете нов конфигурационен файл, например my_server_block.conf
, можете да го заредите в тази директория. За целта, следвайте следните стъпки, в които е даден пример със сайт www.example.com:
Стъпка 1 - съхранете своя my_server_block.conf файл със следното примерно съдържание
server {
listen 0.0.0.0:8080;
server_name www.example.com;
root /app;
index index.htm index.html;
}
Стъпка 2 - включване на новия конфигурационен файл
- Отворете
/opt/docker-nginx/docker-compose.yml
и добавете новия си конфигурационен файл като допълнителен docker volume, например:
---
version: '2'
services:
nginx:
image: docker.io/bitnami/nginx:1.23
ports:
- '80:8080'
- '443:8443'
volumes:
- /path/to/your/app:/app
- /opt/nginx-vhosts/my_server_block.conf:/opt/bitnami/nginx/conf/server_blocks/my_server_block.conf:ro
Моля, обърнете внимание, че този конфигурационен файл съдържа стандартни конфигурационни опции в Nginx. За повече информация ви съветваме да се запознаете с официалната документация.
- Рестартирайте docker контейнерите си:
cd /opt/docker-nginx
docker compose stop
docker compose up -d
Използване на собствени SSL сертификати
Забележка: Описаните по-долу стъпки презюмират, че вече имате настроен собствен домейн, който е насочен към IP адреса, назначен за сървъра ви. Това означава, че трябва да имате вече конфигуриран виртуален хост/хостове, в който да се посочили стандартна SSL конфигурация и пътя до сертификатите спрямо официалната документация на Nginx.
По подразбиране, този application образ разполага с dummy сертификат и частни ключове, качени във вътрешната за docker директория /certs
. Ако желаете да качите собствен сертификат (.crt) и неговия частен ключ (.key), моля, следвайте стъпките, описани по-долу:
Стъпка 1 - качване на сртификатите
Изберете директория, в която ще се помещават сертификатите и ги качете там, например:
mkdir -p /path/to/nginx-persistence/certs
cp /path/to/certfile.crt /path/to/nginx-persistence/certs/server.crt
cp /path/to/keyfile.key /path/to/nginx-persistence/certs/server.key
Стъпка 2 - добавете нужната конфигурация в my_server_block.conf
server {
listen 8443 ssl;
ssl_certificate bitnami/certs/server.crt;
ssl_certificate_key bitnami/certs/server.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location / {
root html;
index index.html index.htm;
}
}
Стъпка 3 - включване на сртификатите в конфигурацията
- Отворете
/opt/docker-nginx/docker-compose.yml
и добавете новия си конфигурационен файл като допълнителен docker volume, например:
---
version: '2'
services:
nginx:
image: 'bitnami/nginx:1.23'
ports:
- '80:8080'
- '443:8443'
volumes:
- /path/to/nginx-persistence/certs:/certs
- /path/to/your/app:/app
- /opt/nginx-vhosts/my_server_block.conf:/opt/bitnami/nginx/conf/server_blocks/my_server_block.conf:ro
- Рестартирайте docker контейнерите си:
cd /opt/docker-nginx
docker compose stop
docker compose up -d
Промяна на пълната Nginx конфигурация (nginx.conf)
В случай, че се наложи да направите промяна в основния nginx.conf файл, то винаги имате възможността да го презапишете със свой собствен. За целта следвайте следните стъпки:
Стъпка 1 - качете конфигурационния си файл
Можете да го качите например в /opt/nginx-conf/nginx.conf
Стъпка 2 - включване на nginx.conf в конфигурацията
- Отворете
/opt/docker-nginx/docker-compose.yml
и добавете новия си конфигурационен файл като допълнителен docker volume, например:
---
version: '2'
services:
nginx:
image: 'bitnami/nginx:1.23'
ports:
- '80:8080'
- '443:8443'
volumes:
- /path/to/your/app:/app
- /path/to/your_nginx.conf:/opt/bitnami/nginx/conf/nginx.conf:ro
- Рестартирайте docker контейнерите си:
cd /opt/docker-nginx
docker compose stop
docker compose up -d
Работа с Docker
Организацията на това приложение е осъществена изцяло посредством Docker. По този начин можем да Ви предоставим готови приложения по-бързо. Освен това, конфигурацията им е по-гъвкава и е доста контролируема. За да можете да го контролирате това приложение обаче, е нужно да знаете някой базови Docker функционалности и особености.
Рестартиране на всички услуги
Рестартирането на базата данни и Docker контейнера, който съдържа самия Nginx, заедно с останалия софтуер, може да бъде извършено по два начина:
- Чрез рестартиране на цялата виртуална машина
- Рестартиране на Docker контейнерите, което е по-бързия вариант. За целта, достъпете машината си чрез SSH, и изпълнете следните команди:
sudo su -
cd /opt/docker-nginx
docker compose restart
Пресъздаване на Docker контейнери
Пресъздаването може да се наложи, в случай че сме променяли конфигурацията в docker-compose.yml
. При тази ситуация, трябва да следвате следните стъпки:
cd /opt/docker-nginx
docker compose stop
docker compose up -d
Проверка на статуса на Docker приложението
За да направите проверка, трябва да изпълните следните команди:
sudo su -
docker ps -a
Моля, обърнете внимание на колоната STATUS
. Тя трябва да показва от колко време работи услугата, например Up X minutes
. Ако статуса е Restarting
, то трябва да се провери какво не е наред с приложението. В такъв случай, можете да направите проверка, като проследите логовете на приложението по следния начин:
- Вземете името на приложението, което можете да видите в колоната
NAMES
от изходния код на командатаdocker ps -a
. Вижте логовете с командатаdocker logs <NAME>
, Къдетое името на контейнера.