Nginx (Ubuntu 22.04)

Nginx (Ubuntu 22.04)

  • Операционна система: ubuntu 22

Описание

Nginx е уеб сървър, който се използва за обработка на уеб заявки и сервиране на уеб съдържание към потребителите. Той е изключително бърз и много мащабируем, като може да обслужва големи количества заявки и да бъде мащабиран до много сървъри. Nginx е софтуер с отворен код, който може да бъде инсталиран на различни операционни системи и да бъде използван за управление на уеб сайтове и приложения.

  1. Включен софтуер
  2. Първоначално стартиране на услугата
  3. Бързи настройкии и често задавани въпроси
  4. Добавяне на статичен сайт
    1. Стъпка 1 - създайте директорията, която да обслужва сайта ви
    2. Стъпка 2 - модифицирайте docker-compose.yml файла и рестартирайте docker
  5. Добавяне на собствени Nginx vhost конфигурации
    1. Стъпка 1 - съхранете своя my_server_block.conf файл със следното примерно съдържание
    2. Стъпка 2 - включване на новия конфигурационен файл
  6. Използване на собствени SSL сертификати
    1. Стъпка 1 - качване на сртификатите
    2. Стъпка 2 - добавете нужната конфигурация в my_server_block.conf
    3. Стъпка 3 - включване на сртификатите в конфигурацията
  7. Промяна на пълната Nginx конфигурация (nginx.conf)
    1. Стъпка 1 - качете конфигурационния си файл
    2. Стъпка 2 - включване на nginx.conf в конфигурацията
  8. Работа с Docker
    1. Рестартиране на всички услуги
    2. Пресъздаване на Docker контейнери
    3. Проверка на статуса на Docker приложението

Включен софтуер

Пакет Версия
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
  1. Редактирайте 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 - включване на новия конфигурационен файл

  1. Отворете /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. За повече информация ви съветваме да се запознаете с официалната документация.

  1. Рестартирайте 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 - включване на сртификатите в конфигурацията

  1. Отворете /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
  1. Рестартирайте 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 в конфигурацията

  1. Отворете /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
  1. Рестартирайте docker контейнерите си:
cd /opt/docker-nginx
docker compose stop
docker compose up -d

Работа с Docker

Организацията на това приложение е осъществена изцяло посредством Docker. По този начин можем да Ви предоставим готови приложения по-бързо. Освен това, конфигурацията им е по-гъвкава и е доста контролируема. За да можете да го контролирате това приложение обаче, е нужно да знаете някой базови Docker функционалности и особености.

Рестартиране на всички услуги

Рестартирането на базата данни и Docker контейнера, който съдържа самия Nginx, заедно с останалия софтуер, може да бъде извършено по два начина:

  1. Чрез рестартиране на цялата виртуална машина
  2. Рестартиране на 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, то трябва да се провери какво не е наред с приложението. В такъв случай, можете да направите проверка, като проследите логовете на приложението по следния начин:

  1. Вземете името на приложението, което можете да видите в колоната NAMES от изходния код на командата docker ps -a. Вижте логовете с командата docker logs <NAME>, Където е името на контейнера.