Включите HTTP/2 в Nginx Docker: пошаговое руководство

Чтобы включить HTTP/2 в Nginx, работающем внутри контейнера Docker, вы можете рассмотреть следующие методы:

Метод 1. Настройка Nginx вручную

  1. Доступ к контейнеру Nginx Docker: docker exec -it /bin/bash.
  2. Найдите файл конфигурации Nginx, который обычно находится по адресу /etc/nginx/nginx.conf.
  3. Откройте файл конфигурации с помощью текстового редактора.
  4. Добавьте следующую строку внутри блока http:
    http {
       ...
       listen 443 ssl http2;
       ...
    }

    Это включает поддержку HTTP/2 на порту 443 для SSL-соединений.

  5. Сохраните изменения и выйдите из текстового редактора.
  6. Перезапустите службу Nginx: перезапуск службы nginx.

Метод 2. Используйте собственный образ Nginx Docker

  1. Создайте собственный файл Dockerfile со следующим содержимым:
    FROM nginx
    RUN sed -i 's/80 default_server/443 default_server ssl http2/g' /etc/nginx/conf.d/default.conf

    Этот файл Dockerfile расширяет официальный образ Nginx и изменяет конфигурацию по умолчанию для включения HTTP/2 на порту 443.

  2. Создайте образ Docker: docker build -t my-nginx-image.
  3. Запустите контейнер Docker, используя собственный образ: docker run -d -p 80:80 -p 443:443 my-nginx-image.
    Это сопоставляет порты 80 и 443 контейнер к соответствующим портам на хост-компьютере.

Метод 3. Используйте файл Docker Compose.
Если вы используете Docker Compose для управления контейнерами, вы можете добавить следующую конфигурацию в свой файл docker-compose.yml:

services:
  nginx:
    image: nginx
    ports:
      - 80:80
      - 443:443
    volumes:
      - ./nginx.conf:/etc/nginx/nginx.conf

В этом примере файл nginx.confдолжен быть помещен в тот же каталог, что и ваш файл docker-compose.yml, и содержать необходимую конфигурацию для включения HTTP/ 2.