Чтобы включить HTTP/2 в Nginx, работающем внутри контейнера Docker, вы можете рассмотреть следующие методы:
Метод 1. Настройка Nginx вручную
- Доступ к контейнеру Nginx Docker:
docker exec -it./bin/bash - Найдите файл конфигурации Nginx, который обычно находится по адресу
/etc/nginx/nginx.conf. - Откройте файл конфигурации с помощью текстового редактора.
- Добавьте следующую строку внутри блока
http:http { ... listen 443 ssl http2; ... }Это включает поддержку HTTP/2 на порту 443 для SSL-соединений.
- Сохраните изменения и выйдите из текстового редактора.
- Перезапустите службу Nginx:
перезапуск службы nginx.
Метод 2. Используйте собственный образ Nginx Docker
- Создайте собственный файл 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.
- Создайте образ Docker:
docker build -t my-nginx-image. - Запустите контейнер 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.