Kali ini saya akan membahas cara recompile nginx pada Os Centos 7 atau yang lebih lama, Debian 8 dan Ubuntu 14.04 agar mendukung HTTP/2 dan Tls 1.3. Secara default Nginx pada Os tersebut di compile menggunakan OpenSSL 1.0.1 sehingga itu tidak memungkinkan untuk menggunakan HTTP/2 dan Tls 1.3. Karena HTTP/2 bisa berjalan di OpenSSL 1.0.2 atau yang lebih baru yang mendukung ALPN, Sedangkan untuk Tls 1.3 bisa berjalan di OpenSSL 1.1.1 atau yang lebih baru. Itu sebabnya kita perlu melakukan kompilasi ulang nginx menggunakan OpenSSL 1.1.1 agar mendukung HTTP/2 dan Tls 1.3.

Apa Itu HTTP/2 Dan Tls 1.3

HTTP atau kepanjangan dari Hypertext Transfer Protocol merupakan sebuah protokol jaringan lapisan aplikasi yang digunakan untuk proses pertukaran data dalam internet antar komputer, HTTP/2 merupakan generasi lanjutan dari HTTP/1.1 yang lebih lama. HTTP/2 memiliki performance yang lebih baik dari HTTP/1.1 karena tujuan utama pengembangan HTTP/2 untuk memperbaiki kelemahan dan kekurangan di HTTP/1.1, Yang membuat HTTP/2 lebih baik karena HTTP/2 menggunakan teknologi multiplexing yang berarti dalam satu koneksi bisa meminta dan mendownload beberapa objek sekaligus dan dilakukan secara paralel. Berbeda dengan HTTP/1.1 yang hanya menggunakan satu koneksi untuk setiap object di web server yang akan ditampilkan di browser pengguna. Sehingga Ini bisa mengakibatkan penumpukan atau bottleneck dan tentunya mengakibatkan proses menjadi lebih lambat.

Sedangkan Tls 1.3 merupakan versi terbaru dari TLS (Transport Layer Security) yang memiliki banyak kelebihan dari versi sebelumya (Tls 1.2). Pada Tls 1.3 memberikan kecepatan yang jauh lebih baik salah satunya proses handshake yang hanya membutuhkan 1 kali proses antara browser dan server, sedangkan pada Tls 1.2 membutuhkan 2 kali proses. Selain itu di Tls 1.3 ada fitur Zero Round-Trip Time (0-RTT) yang membuatnya bisa lebih cepat dari Tls versi sebelumnya.

Cara recompile nginx menggunakan OpenSSL 1.1.1

Untuk memeriksa versi OpenSSL kamu gunakan perintah ini

openssl version

Sekarang proses recompile, pertama install dependensi yang dibutuhkan untuk compile:

Centos 7

yum install gc gcc gcc-c++ pcre-devel zlib-devel make wget openssl-devel libxml2-devel libxslt-devel gd-devel perl-ExtUtils-Embed GeoIP-devel gperftools gperftools-devel libatomic_ops-devel perl-ExtUtils-Embed -y

Debian Dan Ubuntu

apt-get install dpkg-dev libpcrecpp0 libgd2-xpm-dev libgeoip-dev libperl-dev

Selanjutnya periksa versi nginx yang digunakan

nginx -V

Salin dan simpan versi dan konfigurasi nginxnya dari output di atas karena nanti digunakan saat proses compile, konfigurasi yang dimaksud setelah tulisan configure arguments:.

Versi Nginx
Klik foto untuk memperbesar

Pindah ke folder untuk compile

cd /usr/local/src/

Tentukan versi nginx untuk di compile

NGINX_VERSION=1.22.0

Ganti 1.22.0 dengan versi nginx kamu sesuai yang tertulis di output nginx -V tadi.

Selanjutnya download dan extract file yang dibutuhkan:

wget --no-check-certificate https://www.openssl.org/source/openssl-1.1.1g.tar.gz && tar -xzvf openssl-1.1.1g.tar.gz

wget http://nginx.org/download/nginx-${NGINX_VERSION}.tar.gz && tar -xvzf nginx-${NGINX_VERSION}.tar.gz

wget http://hg.nginx.org/njs/archive/1c50334fbea6.zip && unzip 1c50334fbea6.zip

cd nginx-${NGINX_VERSION}/

Pada langkah sebelumnya kamu telah menyalin konfigurasi nginx kamu silahkan edit konfigurasi tersebut dan tambahkan 3 parameter berikut ini:

./configure

--add-dynamic-module=/usr/local/src/njs-1c50334fbea6/nginx

--with-openssl=/usr/local/src/openssl-1.1.1g

Setelah di edit kurang lebih akan seperti ini:

./configure –prefix=/etc/nginx –sbin-path=/usr/sbin/nginx –modules-path=/usr/lib64/nginx/modules –conf-path=/etc/nginx/nginx.conf –error-log-path=/var/log/nginx/error.log –http-log-path=/var/log/nginx/access.log –pid-path=/var/run/nginx.pid –lock-path=/var/run/nginx.lock –http-client-body-temp-path=/var/cache/nginx/client_temp –http-proxy-temp-path=/var/cache/nginx/proxy_temp –http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp –http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp –http-scgi-temp-path=/var/cache/nginx/scgi_temp –user=nginx –group=nginx –with-compat –with-file-aio –add-dynamic-module=/usr/local/src/njs-1c50334fbea6/nginx –with-threads –with-http_addition_module –with-http_auth_request_module –with-http_dav_module –with-http_flv_module –with-http_gunzip_module –with-http_gzip_static_module –with-http_mp4_module –with-http_random_index_module –with-http_realip_module –with-http_secure_link_module –with-http_slice_module –with-http_ssl_module –with-http_stub_status_module –with-http_sub_module –with-http_v2_module –with-mail –with-mail_ssl_module –with-stream –with-stream_realip_module –with-stream_ssl_module –with-stream_ssl_preread_module –with-cc-opt=’-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong –param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -fPIC’ –with-ld-opt=’-Wl,-z,relro -Wl,-z,now -pie’ –with-openssl=/usr/local/src/openssl-1.1.1g

Catatan: Konfigurasi di atas hanya contoh dan tidak untuk digunakan di proses recompile kamu, Kamu harus menggunakan konfigurasi dari output nginx -V di server kamu.

Salin dan tempelkan konfigurasi yang sudah di edit ke terminal ssh pada proses compile tadi dan tekan enter untuk menjalankan dan tunggu hingga selesai.

Konfigurasi Recompile Nginx
Klik foto untuk memperbesar

Selanjutnya proses compile nginx

make && make install

Tunggu hingga proses compile selesai biasanya akan selesai dalam beberapa menit.

Konfigurasi HTTP/2 Dan Tls 1.3 Di Nginx
klik foto untuk memperbesar

Selanjutnya menonaktifkan update nginx otomatis, Karena jika nginx di update maka akan menggunakan konfigurasi sebelumnya, Sehingga jika kamu ingin memperbaharui versi nginx kamu tentunya harus melakukan recompile.
Untuk menonaktifkan update edit file /etc/yum.repos.d/nginx.repo.

nano /etc/yum.repos.d/nginx.repo

Rubah enabled=1 menjadi enabled=0 simpan dan keluar dari text editor, Jika menggunakan nano caranya tekan Ctrl+x ketik y dan tekan Enter.

Disable Update Nginx
klik foto untuk meperbesar

Untuk mengaktifkan HTTP/2 tambahkan http2 pada baris listen di konfigurasi server domain (server block) untuk protokol https. Jika menggunakan Vestacp versi terbaru sudah terdapat Proxy Template http2 silahkan rubah menggunakan template tersebut, namun jika tidak ada letak konfigurasi domain ada di /home/admin/conf/web/domainkamu.com.nginx.ssl.conf rubah domainkamu.com dengan nama domain situs kamu.

nano /home/admin/conf/web/domainkamu.com.nginx.ssl.conf

Contoh:
server {
listen xxx.xxx.xxx.xxx:443 ssl http2;
server_name domainkamu.com www.domainkamu.com;
ssl_certificate /home/admin/conf/web/ssl.domainkamu.com.pem;
ssl_certificate_key /home/admin/conf/web/ssl.domainkamu.com.key;

Dan untuk mengaktifkan Tls 1.3 kamu cukup tambahkan TLSv1.3 pada baris ssl_protocols di konfigurasi nginx jika belum ada. Jika Kamu menggunakan Vestacp file configurasi terletak di /etc/nginx/nginx.conf

nano /etc/nginx/nginx.conf

Contoh:
ssl_session_cache shared:SSL:20m;
ssl_session_timeout 1d;
ssl_protocols TLSv1.2 TLSv1.3;

Jika sudah periksa konfigurasi nginx kamu

nginx -t

Jika tidak ada masalah restart nginx untuk menerapkan perubahan.

Centos

service nginx restart
atau
systemctl restart nginx

Debian dan Ubuntu

service nginx reload

Dan akhirnya kamu telah berhasil mengaktifkan HTTP/2 dan Tls 1.3 Di nginx. Untuk memeriksa HTTP/2 domain kamu sudah aktif atau belum kamu bisa gunakan tools online seperti https://tools.keycdn.com/http2-test dan untuk menguji Tls 1.3 kamu bisa gunakan https://www.ssllabs.com/ssltest/index.html atau yang lainya.

Untuk lebih jelas dan agar mudah memahami silahkan simak video dibawah ini:

 

Sekian tulisan tentang Konfigurasi HTTP/2 Dan Tls 1.3 Di Nginx Pada Centos 7 semoga membantu..

 

By admin

Leave a Reply

Your email address will not be published. Required fields are marked *