Nginx adalah web server dan load balancer yang terkenal di seluruh dunia. Nginx banyak digunakan pada website yang memiliki traffic yang tinggi. Nginx digunakan oleh website-website seperti Netflix, VK, WordPress.com, FastMail.FM, detik.com. Pada situs netcraft.com Nginx digunakan oleh 28,3 % situs-situs di seluruh dunia.

Dalam pembacaan Nginx banya orang yang salah dalam mengucapkannya. Yang benar Anda membaca sbb “enjin ex” atau seperti membaca tulisan berikut “engine X”.

Nginx tersedia dalam dua jenis versi Nginx open source dan Nginx plus. Nginx open source merupakan versi yang tersedia bebas untuk semua orang menggunakan, sedangakan Nginx Plus adalah versi berbayar dari Nginx dengan penambahan fitur advance dari load balancing dan cache, clustering, monitoring, web application firewall dengan mod_security dan support dari Nginx.

Selain itu Nginx dapat digunakan sebagai TCP dan UDP reverse proxy untuk protokol-protokol jaringan yang menggunakan protokol transport TCP dan UDP. Salah satu penggunaan TCP reverse proxy digunakan oleh ZImbra Collaboration Suite untuk memberikan akses ke service IMAP dan POP3.

Kelebihan Nginx

Dibandingkan web server yang lain seperti Apache, Nginx memiliki penggunaan memory yang lebih sedikit, sehingga dapat menerima permintaan dalam jumlah banyak. Oleh karena itu Nginx banyak digunakan sebagai reverse proxy untuk web server lain, bahkan dapat melakukan pembagian beban ke beberapa website sekaligus.

Picture1

Nginx memperhatikan masalah keamanan, sehingga penggunaan htaccess dalam halaman web tidak diijinkan. Sehingga parameter web server tidak dapat diubah semaunya oleh pengguna web, memungkinkan admin web server memiliki kontrol penuh terhadap web server.

Nginx mendukung HTTPS atau SSL/TLS yang digunakan untuk mengamankan halaman login atau administrasi yang diamankan dengan meletakannya dalam halaman web yang terenkripsi. Selain itu koneksi SSL/TLS diperlukan pada protokol HTTP terbaru yaitu HTTP/2, yang telah didukung oleh Nginx.

Sebagai web server Nginx sangat baik dalam menangani konten yang statis, dan tidak mendukung bahasa pemograman seperti PHP secara langsung. Namun dukungan PHP dapat diberikan dengan menggunakan fitur Fast CGI.

Mulai Menggunakan Nginx

Dalam tulisan ini digunakan sistem operasi Linux Ubuntu 16.04.

Dalam memulai menggunakan Nginx maka service ini perlu diinstall dengan cara berikut:

# apt-get install nginx

Untuk mengaktfikan web server Nginx menggunakan perintah

# systemctl start nginx

Untuk mempublish halaman web di web server Nginx, maka file-file web perlu ditempatkan di dalam folder /var/www/html. Contoh:

# echo “<h1>Web Testing</h1>” > /var/www/html/pesan.html

Maka halaman web dapat diakses di browser dengan URL http://localhost/pesan.html
File-file log dari Nginx terletak pada direktori /var/log/nginx, terdiri atas:

  • /var/log/nginx/access.log untuk semua koneksi yang terjadi ke service Nginx
  • /var/log/nginx/error.log untuk semua koneksi yang bermasalah atau service mengalami error

Dukungan PHP di Nginx

Secara default Nginx tidak mensupport website yang dibuat dengan menggunakan bahasa pemrograman PHP. Nginx juga tidak bisa memasukkan PHP sebagai modul, namun sebagai proxy ke PHP-FPM dengan menggunakan Fast CGI.

Dalam menginstall aplikasi PHP untuk dapat terhubung ke database seperti MySQL maka perlu diinstall modul PHP untuk mendukung database tersebut. Cara install PHP sebagai berikut:

# apt-get install php php-mysql mysql-server

Kemudian untuk mendukung PHP maka diperlukan FastCGI dengan menginstall paket PHP-FPM (PHP FastCGI Process Manager), dengan cara berikut

# apt-get install php-fpm

Agar PHP dapat berjalan dengan benar di Nginx maka diperlukan penonaktifan cgi.fix_pathinfo dengan perintah berikut:

# nano /etc/php/7.0/fpm/php.ini

Cari baris berikut:

cgi.fix_pathinfo=0

Restart service untuk mengaktifkan konfigurasi baru dan mengaktifkan php-fpm

# systemctl restart php7.0-fpm

Untuk mengaktifkan konfigurasi PHP pada Nginx maka setiap website yang menggunakan perlu ditambahkan konfigurasi berikut:

# nano /etc/nginx/sites-available/default

server {
    listen 80 default_server;
    listen [::]:80 default_server;
    root /var/www/html;
    index index.php index.html index.htm index.nginx-debian.html;
    server_name _;
    location / {
          try_files $uri $uri/ =404;
    }
    location ~ \.php$ {
          include snippets/fastcgi-php.conf;
          fastcgi_pass unix:/run/php/php7.0-fpm.sock;
    }
}

Kemudian restart Nginx untuk mulai mengaktifkan konfigurasi yang baru dibuat

# systemctl restart nginx

Buat file pengetesan halaman web PHP dengan cara berikut:

# echo “<?php phpinfo(); ?>” > /var/www/html/info.php

Akses di browser Anda URL berikut http://localhost/info.php

Nginx sebagai Reverse Proxy

Server proxy adalah server yang bertindak sebagai perantara client dan server. Bagi client server proxy adalah server, sedangkan bagi server yang dituju oleh klien server proxy sebagai klien. Dikarenakan server proxy sebagai perantara, maka untuk koneksi yang terjadi dapat dilakukan caching, filtering dan mengarahkan ke server lain.
Bila seseorang mengatakan Proxy maka biasanya yang dimaksud adalah Forward Proxy.

Forward proxy menyediakan service proxy ke klien atau grup klien untuk menuju server yang berada di internet. Ketika suatu klien melakukan koneksi untuk mentransfer file, maka klien harus melalui proxy terlebih dahulu. Pada proxy server bisa diijinkan atau tidak diijinkan untuk diakses.

Reverse proxy melakukan kebalikan dari forward proxy. Dimana forward proxy melakukan proxy atas nama klien, reverse proxy melakukan proxy atas nama server. Reverse proxy menerima dari klien eksternal sebagai perwakilan dari server-server yang berjalan dibalekangnya.

Picture2

Dengan menggunakan reverse proxy maka server asli yang dimiliki tidak dapat diakses dari server langsung, sehingga menjadi lebih aman. Reverse proxy yang diakses dari internet salah satu interfacenya harus menggunakan IP publik atau IP private yang telah di NAT ke ip publik tertentu, namun server dibelakangnya dapat menggunakan IP private sehingga dapat menghemat IP publik.

Berikut konfigurasi reverse proxy untuk domain theapp.web.id dan semua koneksi yang mengarah ke domain tersebut diarahkan ke URL http://192.168.1.1/app

# nano /etc/nginx/sites-available/proxy.conf

server {
    listen 80;
    server_name theapp.web.id;
    location / {
        proxy_pass http://192.168.1.1/app;
    }
}

Kemudian restart Nginx agar konfigurasi Nginx berubah

# systemctl restart nginx

Setelah Nginx di restart maka reverse proxy telah diaktifkan. (Toto)

Iklan