Я запускаю debian jessie на своем сервере и недавно перешел на новый веб-сервер nginx с поддержкой http / 2 (nginx 1.10). На сегодняшний день он отлично работает, и веб-сервер доставляет контент по протоколу http2.
Я читал, что хром отказывается от поддержки NPN и разрешает ALPN только после 15.5.2016. ALPN - это расширение, которое требует установленного openssl 1.0.2, но на debian jessie есть только openssl 1.0.1 (также на backports debian и других репозиториях openssl 1.0.0 отсутствует. 2 версия для этого debian).
И есть проблема - я обновился с SPDY до http2, и через несколько дней мне придется отключить http2 и я не смогу использовать SPDY, потому что эта версия nignx имеет только http2. Я также читал, что эта версия debian застрянет с openssl 1.0.1, и только debian stretch будет иметь openssl 1.0.2. Но до даты выпуска почти год, и поддержка Chrome скоро прекратится, поэтому я не хочу терять преимущества протокола http2.
Есть ли какое-нибудь решение, как установить openssl 1.0.2 в этой системе без сборки собственная сборка (плохое обслуживание) или ждете, когда она появится в репозитории backports? Мне также не нужны две версии openssl в моей системе, если одна из них должна быть связана и обслуживаться вручную.
Спасибо за любую помощь.
2016/08/08 шинэчлэлт: nginx
in jessie-backports
(хувилбар 1.9.10-1 ~ bpo8 + 3 [1147116) ] нь
openssl> = 1.0.2 ~
-н эсрэг бүтээгдсэн. jessie
ажиллаж байгаа бол одоо ажиллах ALPN
. jessie-backports [-оос багцуудыг шаарддаг. 1147124],
сунгах
-аас багц татаж гаргах шаардлагагүй болсон.
-
Жинхэнэ хариулт: За, тайлбарын дагуу миний хариултыг энд оруулав: Миний бодлоор өнөөдрийн байдлаар 2016/05/09 оны байдлаар шийдэх тийм олон арга байхгүй байна. Үндсэндээ > = openssl 1.0.2 ~
-ийн эсрэг хөрвүүлсэн орчин үеийн nginx
-г системдээ нэвтрүүлэхийн тулд ямар нэгэн байдлаар оролдох хэрэгтэй.
Одоогоор миний харж байгаа цорын ганц хоёр сонголт байна: Та өөрөө хийхийг хүсэхгүй байгаа зүйлээ өөрөө хөрвүүлдэг, энэ нь нэлээд ойлгомжтой, эсвэл орчин үеийн багцуудыг Debian stretch
дотроос татаж авдаг. . Үүнд та тогтвортой орчныг өөр орчинтой хольж байгаа тул зарим эрсдлүүд багтах болно, гэхдээ миний бодлоор эдгээр эрсдэлүүд нэлээд бага байна , учир нь та Debian
ашиглаж байна.
Тэгэхээр , одоо явж үзье:
Debian stretch
репозиторыг зохимжтой эх сурвалжууд дээрээ нэмээрэй
. Үүний тулд /etc/apt/sources.list
-г бүү ашиглаарай, харин үүнийг цэвэр байлгахын тулд /etc/apt/sources.list.d/
дотор тусгай файл ашиглана уу, Би өөрөө stretch.list
ашиглаж байна.
Эдгээр мөрүүдийг дотор нь байрлуул:
deb http://httpredir.debian.org/debian/ stretch main хувьцаа үнэгүй
deb-src http://httpredir.debian.org/debian/ сунгах үндсэн хувь нэмэр үнэгүй
deb http://security.debian.org/ stretch / updates үндсэн хувь нэмэр үнэгүй
deb-src http://security.debian.org/ stretch / updates үндсэн хувь нэмэр үнэгүй
Өмнө нь "дэгдэмхий" гэж нэрлэдэг # сунгах-шинэчлэлт
deb http://httpredir.debian.org/debian/ stretch-updates үндсэн хувь нэмэр үнэгүй
deb-src http://httpredir.debian.org/debian/ stretch-updates үндсэн хувь нэмэр үнэгүй
тохируулах -г тохируулж, зөвхөн зааж өгч буй Debian stretch
дотроос багцыг татаж байгаа эсэхийг шалгаарай. Үүнийг ашиглах файл нь / etc / apt / preferences
, дотор нь, put:
Багц: *
Зүү: суллах n = jessie
Тэргүүлэх ач холбогдол: 900
Багц: *
Зүү: суллах a = jessie-backports
Тэргүүлэх ач холбогдол: 500
Багц: *
Зүү: суллах n = сунгах
Тэргүүлэх ач холбогдол: 100
(Та хүрээлэн буй орчиндоо нийцүүлэхийн тулд багц, тэргүүлэх чиглэлүүдийг өөрчлөх шаардлагатай байж магадгүй юм.)
Run apt-get update
(via sudo
/ as root
. ]) багц кэшийг шинэчлэх.
nginx
-ыг -ээс Debian stretch
-с суулгана уу: apt-get install -t stretch nginx
(үүнийг -р дамжуулан хийгээрэй. sudo
/ as root
). Ашиг!
Миний тайлбар (ууд) -д дурдсанчлан учрах эрсдлийг бууруулахын тулд та chroot эсвэл LXC гэх мэт савтай уусмал ашиглаж болно. Хэрэв та chroot
замаар явахыг хүсвэл тэнд сүлжээний интерфэйсийг тохируулах хэрэгтэй: Үүнийг хийхийн тулд энэ блогт жишээг үзээрэй. сүлжээний нэрийн орон зайд
.
Энэ нь тусална гэж найдаж байна; Хэрэв танд илүү их асуулт байгаа бол надтай холбоо бариарай. Санал хүсэлтэд талархаж байгаа бөгөөд энэ нь хэрхэн явагдахыг сонирхож байна.
Другой способ - установить OpenSSL 1.0.2 из jessie-backports и использовать сборки Ubuntu 16.04 LTS из собственного репозитория nginx. Таким образом, вы, по крайней мере, используете пакет OpenSSL, созданный для Jessie.
Добавьте в /etc/apt/sources.list
:
# jessie-backports, from stretch-level but with no dependencies
deb http://httpredir.debian.org/debian/ jessie-backports main contrib non-free
deb-src http://httpredir.debian.org/debian/ jessie-backports main contrib non-free
# Nginx repository - use Ubuntu 16.04 LTS Xenial to get packages compiled with OpenSSL 1.0.2
deb http://nginx.org/packages/mainline/ubuntu/ xenial nginx
deb-src http://nginx.org/packages/mainline/ubuntu/ xenial nginx
Затем запустите:
apt-get update
apt-get install -t jessie-backports openssl
apt-get install nginx
Это, очевидно, вводит вас в официально неподдерживаемая конфигурация, но, возможно, это лучше, чем вообще не иметь пакета - и у меня это сработало. Кроме того, использование репозитория nginx означает получение свежих обновлений.
Другой метод - использовать jessie-backports, а затем легко перестроить nginx
добавить в /etc/apt/sources.list backports
deb http://ftp.debian.org/debian jessie-backports main
, а затем запустить от имени пользователя root
apt-get update
apt-get install -t jessie-backports openssl
а затем пересоберите nginx. Следуйте инструкциям на https://wiki.debian.org/BuildingAPackage
Для меня самым простым способом исправить это было использование другой образ Nginx Docker, см. официальную сборку Nginx на Docker Hub . В сборке Docker Nginx по умолчанию используется Debian Jessie, поэтому проблема не решена, но они также предлагают альтернативную сборку на основе Alpine Linux . В его последних сборках действительно используется OpenSSL 1.0.2!
Таким образом, это решение предполагает, что вы установили Docker и нормально запускаете Nginx на Alpine Linux
вместо Debian Jessie
.
Чтобы запустить контейнер Nginx:
sudo docker run --name nginx-container -p 80:80 -p 443:443 -v /path/to/your/nginx/directory/:/etc/nginx/ /path/to/your/files/to/serve/:/usr/share/nginx/html/ -d nginx:1.11-alpine
Краткое объяснение для начала работы с Docker:
docker run
: загружает образ Docker (в данном случае nginx: 1.11-alpine
), если у вас его еще нет, и запускает контейнер Docker на основе этого образа - name nginx-container
: дает контейнеру Docker имя (вы можете просмотреть все запущенные контейнеры Docker, используя sudo docker ps
или используйте sudo docker ps -a
для просмотра остановленных контейнеров) -p 80:80 -p 443: 443
: связывает порты 80 и 443 на вашем хост-компьютер к портам 80 и 443 соответственно в контейнере Docker -v / path / to / your / nginx / directory /: / etc / nginx /
: монтирует каталог в вашей хост-системе, который содержит ваш Nginx co nfiguration в каталог / etc / nginx /
в контейнере Docker / путь / к / вашим / файлам / к / serve /: / usr / share / nginx / html /
: mounts каталог в вашей хост-системе, содержащий файлы, которые должен обслуживать Nginx -d
:запускает контейнер в фоновом режиме (вы можете остановить контейнер, используя docker stop nginx-container
) nginx: 1.11-alpine
: используйте этот образ для запуска вашего контейнера из ( здесь перечислены официальные образы Nginx Docker ) Также полезно:
sudo docker exec nginx-container
для запуска команды в контейнере, например sudo docker exec nginx-container nginx -s reload
для перезагрузки Nginx после изменения файлов конфигурации в хост-системе sudo docker exec -it nginx-container bash
, чтобы ввести bash в контейнере, чтобы вы могли работать там напрямую (не рекомендуется, но иногда полезно) Альтернативный способ - использовать вместо этого BoringSSL, который не вредит окружению OpenSSL. Вот подробности, на которые можно сослаться, https://www.admon.org/hardwares/enable-http2-support-for-nginx-on-debian-jessie
В моей ситуации я использовал репозиторий Dotdeb apt. Инструкции этого веб-сайта дают возможность добавить репозиторий, который позволяет вам установить Nginx с «полной» поддержкой HTTP2. Текущая версия - 1.14, что на один минор отстает от последней версии, так что вы не сильно отстанете (текущий backport - 1.10).