1. Prakata
# ssl写在443端口后面。这样http和https的链接都可以用 listen 443 ssl http2 default_server; server_name chat.chengxinsong.cn; # hsts的合理使用,max-age表明hsts在浏览器中的缓存时间,includesubdomainscam参数指定应该在所有子域上启用hsts,preload参数表示预加载,通过strict-transport-security: max-age=0将缓存设置为0可以撤销hsts add_header strict-transport-security "max-age=63072000; includesubdomains; preload"; ssl_certificate /usr/local/nginx/cert/2540136_chat.chengxinsong.cn.pem; ssl_certificate_key /usr/local/nginx/cert/2540136_chat.chengxinsong.cn.key; # 分配20mb的共享内存缓存,不同工作进程共享tls会话信息 # ssl_session_cache shared:ssl:20m; # 设置会话缓存过期时间1h ssl_session_timeout 60m; # tls协议的合理配置 # 指定tls协议的版本,不安全的ssl2和ssl3要废弃掉 ssl_protocols tlsv1 tlsv1.1 tlsv1.2; # 启用ssl_prefer_server_ciphers,用来告诉nginx在tls握手时启用服务器算法优先,由服务器选择适配算法而不是客户端 ssl_prefer_server_ciphers on; # 优先选择支持前向加密的算法,且按照性能的优先顺序排列 ssl_ciphers ecdhe-rsa-aes128-gcm-sha256:ecdhe:ecdh:aes:high:!null:!anull:!md5:!adh:!rc4; # 会话恢复的合理使用 # 配置会话票证,减少了tls握手的开销 ssl_session_tickets on;
Kemudian laksanakan konfigurasi cek nginx. nginx -t
bermakna http2.0 kekurangan ngx_http_v2_module. nginx tidak mempunyai modul http_ssl_module Cuma bawa konfigurasi --with-http_ssl_module semasa menyusun dan memasang.
2. Cari maklumat untuk mencari sebabnya
Sebab di atas ialah nginx telah menggantikan ngx_http_spdy_module dengan modul http_v2_module sejak 1.9.5, dan secara rasmi mula untuk menyokong protokol http2.
Tetapi nginx saya ialah 1.12.2. Ia tidak sepatutnya menjadi masalah dengan versi ngin
Nota:
1 Dan versi perpustakaan openssl perlu disusun pada 1.0.2 atau lebih tinggi . 1. Untuk mendayakan sokongan protokol http/2, anda perlu menyusun nginx 1.10 atau lebih tinggi dan perpustakaan openssl versi 1.0.2 atau lebih tinggi.
2.http2.0 hanya menyokong tapak web dengan https didayakan.
Ia mungkin versi perpustakaan openssl pelayan, yang didapati 1.0.2.
Jadi anda masih perlu menaik taraf ke tahap yang lebih tinggi.
3. Naik taraf openssl
Dalam protokol http2.0, ia melibatkan sokongan alpn (perundingan protokol lapisan aplikasi, rundingan protokol lapisan aplikasi pada masa ini, semua arus perdana Pustaka openssl terbina dalam dalam sistem pelayan unix semuanya lebih rendah daripada versi 1.0.2. Dengan menggunakan alat baris arahan openssl, anda boleh menyemak sama ada perkhidmatan http2 semasa menyokong alpn.
Cari direktori pemasangan
1 Muat turun versi terkini pustaka openssl, susun dan pasang
wget https://www.openssl.org/source/openssl-1.1.0f.tar.gz tar xzf openssl-1.1.0f.tar.gz cd openssl-1.1.0f ./config --prefix=/usr/local/openssl make && make install
2
IV , nginx menghidupkan modul sslNginx yang dikompilasi lalai tidak termasuk modul h2 Kami perlu menambah parameter untuk menyusun versi pembangunan nginx 1.9 dan ke atas perlu menambah parameter kompilasi oleh kami daripada perisian Yang dimuat turun dari gudang sumber disusun secara lalai. nginx tidak lagi menyokong spdy.
Jika nginx yang anda susun tidak menyokongnya, kemudian tambah: --with-http_v2_module dalam ./configure Jika tiada sokongan ssl, anda juga perlu menambah --with-http_ssl_module
<. 🎜>1. Cari pakej kod sumber dan semak sama ada konfigurasi menyokong http2
Pada masa ini, anda perlu mencari konfigurasi dalam folder kod sumber semasa memuat turun. Nota: Bukan folder selepas penyusunan.
Dalam konfigurasi "./configure", "--with" bermaksud modul yang membolehkan, yang bermaksud bahawa modul ini tidak akan dibina secara automatik apabila menyusun "--without" Menunjukkan bahawa modul dilumpuhkan, yang bermaksud bahawa modul ini akan dibina secara automatik semasa penyusunan Jika anda mahu nginx berjalan dengan ringan, anda boleh mengalih keluar beberapa modul yang tidak diperlukan.
Jalankan ./configure --helpDaripada rajah di atas, kita tahu bahawa nginx tidak akan membina http_ssl_module dan http_v2_module secara automatik semasa penyusunan. Jadi nginx perlu dikompilasi semula.
2. Tambah kompilasi parameter
Maklumat konfigurasi baharu kami hendaklah ditulis seperti ini:
mv /usr/bin/openssl /usr/bin/openssl.old mv /usr/include/openssl /usr/include/openssl.old ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl ln -s /usr/local/openssl/include/openssl /usr/include/openssl #链接新库文件 ln -s /usr/local/openssl/lib/libssl.so /usr/local/lib64/libssl.so ln -s /usr/local/openssl/lib/libcrypto.so /usr/local/lib64/libcrypto.so #检查更新后的openssl依赖库是否是1.1.0f strings /usr/local/lib64/libssl.so | grep openssl #显示结果表明已升级到最新版本链接库 openssl 1.1.0f 25 may 2017 #配置openssl库文件的搜索路径 echo '/usr/local/openssl/lib' >> /etc/ld.so.conf #使修改后的搜索路径生效 ldconfig -v #查看openssl版本,结果显示升级成功 openssl version openssl 1.1.0f 25 may 2017
./configure --prefix=/usr/local/nginx --with-http_v2_module --with-http_ssl_module --with-openssl=/home/soft/openssl-1.1.0f
3 Sandaran dan penggantian
(1) Kemudian sandarkan nginx yang dipasang asal
make
cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx_07_22.bak
./nginx -s quit
Tunggu selama 1 minit, dan kemudian anda boleh melihat kesan http2.0.
5 Periksa sama ada tapak web itu ialah http2.0
Klik kanan nama dan semak protokol, supaya anda boleh melihat protokol http.
Alamat tapak web tangkapan skrin di atas:
Atas ialah kandungan terperinci Bagaimana untuk menaik taraf nginx untuk menyokong HTTP2.0. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!