Назад | Перейти на главную страницу

HTTP / 2 enable не работает

В Ubuntu 14.04.4 LTS с HHVM (HipHop VM 3.14.1) и Nginx (nginx / 1.10.1)

Я пытаюсь включить HTTP / 2 в моем vhost, как показано ниже

server {
    listen 443 ssl http2 default_server;
    listen [::]:443 ssl http2 default_server;

    root /var/www/mydomain;
    index index.html index.htm index.php;

    server_name mydomain.com;

    ssl_certificate /etc/nginx/ssl/www_mydomain_com.pem;
    ssl_certificate_key /etc/nginx/ssl/server.key;

    access_log /var/log/nginx/localhost.laravel-access.log;
    error_log  /var/log/nginx/locahost.laravel-error.log error;

    charset utf-8;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location = /favicon.ico { log_not_found off; access_log off; }
    location = /robots.txt  { log_not_found off; access_log off; }

    error_page 404 /index.php;

    include hhvm.conf;  # The HHVM Magic Here

    # Deny .htaccess file access
    location ~ /\.ht {
        deny all;
    }

    #Add Expires headers
    location ~* \.(?:ico|css|js|gif|jpe?g|png|jpg|woff|woff2)$ {
        expires 30d;
        add_header Pragma public;
        add_header Cache-Control "public";
    }
}

server {
    listen         80;
    listen    [::]:80;
    server_name    mydomain.com;
    return         301 https://$server_name$request_uri;
}

Но когда я пытаюсь проверить HTTP / 2 тест, Я всегда получаю

Отрицательно! mydomain.com не поддерживает HTTP / 2.0. Поддерживаемые протоколы: http / 1.1

ALPN не поддерживается.

редактировать

$ nginx -V следующим образом

nginx version: nginx/1.10.1
built with OpenSSL 1.0.1f 6 Jan 2014
TLS SNI support enabled
configure arguments: --with-cc-opt='-g -O2 -fPIE -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2' --with-ld-opt='-Wl,-Bsymbolic-functions -fPIE -pie -Wl,-z,relro -Wl,-z,now' --prefix=/usr/share/nginx --conf-path=/etc/nginx/nginx.conf --http-log-path=/var/log/nginx/access.log --error-log-path=/var/log/nginx/error.log --lock-path=/var/lock/nginx.lock --pid-path=/run/nginx.pid --http-client-body-temp-path=/var/lib/nginx/body --http-fastcgi-temp-path=/var/lib/nginx/fastcgi --http-proxy-temp-path=/var/lib/nginx/proxy --http-scgi-temp-path=/var/lib/nginx/scgi --http-uwsgi-temp-path=/var/lib/nginx/uwsgi --with-debug --with-pcre-jit --with-ipv6 --with-http_ssl_module --with-http_stub_status_module --with-http_realip_module --with-http_auth_request_module --with-http_addition_module --with-http_dav_module --with-http_geoip_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_image_filter_module --with-http_v2_module --with-http_sub_module --with-http_xslt_module --with-stream --with-stream_ssl_module --with-mail --with-mail_ssl_module --with-threads --add-module=/build/nginx-abUnII/nginx-1.10.1/debian/modules/nginx-auth-pam --add-module=/build/nginx-abUnII/nginx-1.10.1/debian/modules/nginx-dav-ext-module --add-module=/build/nginx-abUnII/nginx-1.10.1/debian/modules/nginx-echo --add-module=/build/nginx-abUnII/nginx-1.10.1/debian/modules/nginx-upstream-fair --add-module=/build/nginx-abUnII/nginx-1.10.1/debian/modules/ngx_http_substitutions_filter_module

Как я могу включить HTTP / 2?

Что ж, сообщение об ошибке вполне очевидно:

ALPN не поддерживается.

Согласование протокола уровня приложений, также известное как ALPN - это расширение Transport Layer Security (TLS) для согласования протоколов прикладного уровня. ALPN позволяет прикладному уровню согласовывать, какой протокол должен выполняться через безопасное соединение, таким образом, чтобы избежать дополнительных циклов передачи данных и который не зависит от протоколов прикладного уровня. Он используется HTTP / 2. Кроме того, это также необходимо для HTTP / 2 (AFAIK).

ALPN поддерживается / с помощью openssl => 1.0.2. Согласно вашему выходу nginx -V, ваш nginx был построен с òpenssl 1.0.1f, так что это не может и не будет работать. Чтобы включить (и использовать) HTTP / 2, вы должны запустить более современную версию nginx. Недавно я объяснил, как это сделать Вот. (Но, пожалуйста, не копируйте / вставляйте это, это не сработает, поскольку оно касается Debian.)