nginx http2
Привет,
В продължение на пост-а ми от 20.08.2015 за nginx http/2 support, искам да споделя, че днес успешно внедрих http2 (http2 демо от акамаи) в уеб сървъра на root.bg.
Днес ще споделя накратко как се случиха нещата, както и с какви трудности се слбъсках докато правих upgrade-а.
Инсталацията
Първо трябваше да обновя версията на nginx-a от 1.8.1 на 1.9.14. Нещата се случиха по следният начин:
cd /usr/src/ wget http://nginx.org/download/nginx-1.9.14.tar.gz tar zxvf nginx-1.9.14.tar.gz cd nginx-1.9.14
Четох, че за да се поддържа ALPN е необходимо да имам openssl версия 1.0.2* (в моят случай предварително бях дръпнал openssl-1.0.2g).
Следва компилиране на nginx. Тук трябва да обесня че използвам ngx_pagespeed и затова го включвам в компилацията.
./configure --add-module=../ngx_cache_purge/ --prefix=/usr --sbin-path=/usr/sbin/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --pid-path=/var/run/nginx/nginx.pid --lock-path=/var/lock/nginx.lock --user=www-data --group=www-data --with-http_ssl_module --with-http_flv_module --with-http_gzip_static_module --http-log-path=/var/log/nginx/access.log --http-client-body-temp-path=/var/tmp/nginx/client/ --http-proxy-temp-path=/var/tmp/nginx/proxy/ --http-fastcgi-temp-path=/var/tmp/nginx/fcgi/ --with-http_stub_status_module --with-http_realip_module --with-sha1=/usr/include/openssl --with-md5=/usr/include/openssl --with-openssl=../openssl-1.0.2g/ --with-http_v2_module --with-http_mp4_module --with-poll_module --add-module=../nginx-rtmp-module --add-module=../headers-more-nginx-module-0.25/ --with-ipv6 --add-module=../naxsi-master/naxsi_src --add-module=../nginx-module-vts --add-module=../ngx_pagespeed-release-1.11.33.0-beta && make && make install
След няколко минути всичко беше готово. От тук насетне остана да добавя във виртуалния хост
listen 443 ssl http2;
и да reload-а nginx-a.
Направих тест през https://www.ssllabs.com/ssltest/analyze.html?d=root.bg и изкарах А+ 🙂 а ето и резултата от https://tools.keycdn.com/http2-test
Проблемите след това
Всичко беше добре докато се сблъсках със следният проблем : През google chrome, сайта спря да се зарежда. През firefox всичко беше наред.
Съобщението за грешка беше следното:
Оказа се, че проблема е заради WAF (web application firewall)-а който използвам – а именно naxsi! Преди време бях писал пост как успешно внедрих naxsi, обаче се оказа, че naxsi не поддържа http2 :/
Повече инфо по този въпрос тук, тук и тук.
Така се принудих да спра временно използването му. Надявам се в най-скоро време да бъде пусната нова версия която да поддържа http2.
Ами… май това е всичко!