Nginx adalah salah satu server web paling populer di dunia dan bertanggung jawab untuk meng-hosting beberapa situs dengan lalu lintas terbesar dan tertinggi di internet. Nginx lebih ramah sumber daya daripada Apache dalam beberapa kasus, dan dapat digunakan sebagai web server maupun reversed proxy. (Untuk perbandingan antara Nginx vs Apache lihat artikel)

Nginx logo
Nginx logo

Dalam panduan ini, kita akan membahas cara menginstal Nginx di Ubuntu server. Namun jika ingin melakukan instalasi yang lebih komplit (Lengkap dengan PHP dan MySQL), silahkan melihat artikel : Cara Install dan Konfigurasi LEMP (Nginx + MySQL+ PHP)

Permulaan

Sebelum Anda memulai panduan ini, Anda harus memiliki pengguna biasa (bukan root) dengan hak sudo yang dikonfigurasi di server Anda. Anda dapat mempelajari cara mengonfigurasi akun pengguna biasa dengan mengikuti panduan Cara Setup Server Ubuntu Untuk Pertama Kali.

Saat Anda memiliki akun, masuk sebagai pengguna non-root untuk memulai.

Langkah 1 – Install Nginx

Karena Nginx tersedia di repositori default Ubuntu, maka pengguna dapat menginstal dari repositori ini menggunakan apt packaging system.

setelah login ke Ubuntu server melalui SSH ketik perintah berikut pada terminal :

sudo apt update
sudo apt install nginx

Setelah menerima prosedur, apt akan menginstal Nginx dan semua dependensi yang diperlukan ke server Anda.

Langkah 2 – Izinkan Akses Firewall

Sebelum menguji Nginx, perangkat lunak firewall perlu disesuaikan untuk memungkinkan akses ke layanan. Nginx mendaftarkan dirinya sebagai layanan dengan ufw saat instalasi, membuatnya mudah untuk memungkinkan akses Nginx.

Daftar konfigurasi aplikasi yang ufw tahu cara bekerja dengan mengetik:

sudo ufw app list

Output bisa berbeda, namun yang perlu kita soroti adalah Nginx

Available applications:
  Nginx Full
  Nginx HTTP
  Nginx HTTPS
  OpenSSH

Seperti yang Anda lihat, ada tiga profil yang tersedia untuk Nginx:

  • Nginx Full: Profil ini membuka port 80 (normal, lalu lintas web tidak terenkripsi) dan port 443 (TLS / SSL lalu lintas terenkripsi)
  • Nginx HTTP: Profil ini hanya membuka port 80 (normal, lalu lintas web tidak terenkripsi)
  • Nginx HTTPS: Profil ini hanya membuka port 443 (TLS / SSL lalu lintas terenkripsi)

Baca juga : Apa itu HTTPS dan Mengapa HTTPS Penting?

Disarankan agar Anda mengaktifkan profil paling ketat yang masih memungkinkan lalu lintas yang aman ke server Ubuntu Anda. Karena masih tahap awal dan mengonfigurasi SSL untuk server dalam panduan ini, kami hanya perlu mengizinkan lalu lintas di port 80.

Silahkan ketik perintah berikut untuk mengijinkan akses Nginx untuk melewati firewall

sudo ufw allow 'Nginx HTTP'

Setelah selesai, cek konfigurasi Anda dengan perintah :

sudo ufw status

Anda akan melihat lalu lintas HTTP diizinkan di output yang ditampilkan:

Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere                  
Nginx HTTP                 ALLOW       Anywhere                  
OpenSSH (v6)               ALLOW       Anywhere (v6)             
Nginx HTTP (v6)            ALLOW       Anywhere (v6)

Langkah 3 – Periksa Status Server

Di langkah proses instalasi ini, Ubuntu server sudah terpasang dan otomatis memulai Nginx. Server web seharusnya sudah aktif dan berjalan.

Kita dapat memeriksa dengan systemd init system untuk memastikan layanan berjalan dengan mengetik:

systemctl status nginx

Output :

● nginx.service - A high performance web server and a reverse proxy server
   Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
   Active: active (running) since Fri 2018-04-20 16:08:19 UTC; 3 days ago
     Docs: man:nginx(8)
 Main PID: 2369 (nginx)
    Tasks: 2 (limit: 1153)
   CGroup: /system.slice/nginx.service
           ├─2369 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
           └─2380 nginx: worker process

Setelah Nginx Berjalan di terminal Linux, langkah selanjutnya periksa pada Browser dengan mengetik Alamat IP, Untuk mengetahui Alamat IP ada 2 cara yang bisa anda lakukan :

ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'

Untuk alternatif lain bisa juga menggunakan :

curl -4 icanhazip.com

Setelah mengetahui alamat IP silahkan ketik alamat IP pada Browser

http://alamat_ip_server_ip "contoh http://123.456.789.000"

Jika halaman yang muncul adalah halaman berikut : berarti Instalasi sudah berhasil :
Nginx default page

Langkah 4 – Manajemen dasar Nginx

Sekarang setelah server web Anda aktif dan berjalan, mari kita tinjau beberapa perintah manajemen dasar.

Untuk menghentikan Nginx gunakan perintah :

sudo systemctl stop nginx

Untuk memulai Nginx (saat Nginx berhenti) gunakan perintah

sudo systemctl start nginx

Untuk menghentikan dan memulai ulang Nginx gunakan perintah

sudo systemctl restart nginx

Jika Anda hanya membuat perubahan konfigurasi, Nginx dapat memuat ulang tanpa menghambat koneksi ke server (delay sekitar 1-3 detik). Untuk melakukan ini, ketik:

sudo systemctl reload nginx

Secara default, Nginx dikonfigurasi untuk memulai secara otomatis ketika server melakukan booting. Jika ini bukan yang Anda inginkan, Anda dapat menonaktifkan perilaku ini dengan mengetik:

sudo systemctl disable nginx

Untuk mengaktifkan kembali layanan untuk memulai saat boot, Anda dapat mengetik:

sudo systemctl enable nginx

Langkah 5 – Setting Server Blocks

Saat menggunakan web server Nginx, server block (mirip dengan host virtual di Apache) dapat digunakan untuk merangkum detail konfigurasi dan menghosting lebih dari satu domain di satu server. Kami akan menyiapkan domain bernama example.com, tetapi Anda harus menggantinya dengan nama domain Anda sendiri.

Nginx pada Ubuntu memiliki satu block server yang diaktifkan secara default yang dikonfigurasi untuk menyajikan dokumen dari direktori di /var/www/html. Meskipun ini bekerja dengan baik untuk satu situs, itu bisa menjadi berat jika Anda meng-hosting beberapa situs.

Alih-alih memodifikasi /var/www/html, mari kita membuat struktur direktori di dalam /var/www untuk situs example.com kami, membiarkan/var/www/htmlsebagai direktori default untuk dilayani jika permintaan klien tidak cocok dengan situs lain mana pun..

Buat direktori untuk example.com sebagai berikut, menggunakan flag -p (p = parent directory) untuk membuat direktori induk yang diperlukan:

sudo mkdir -p /var/www/example.com

Next, tetapkan kepemilikan direktori dengan variabel $USER:

sudo chown -R $USER:$USER /var/www/example.com

Izin root web harus benar jika Anda belum mengubah nilai umask, tetapi Anda dapat memastikan dengan mengetik:

sudo chmod -R 755 /var/www/example.com

Selanjutnya, buat halaman contoh index.html menggunakan nano atau editor favorit Anda:

nano /var/www/example.com/index.html

Di dalam, tambahkan contoh HTML berikut:

<html>
    <head>
        <title>Situs Pertama!</title>
    </head>
    <body>
        <h1>Berhasil! Pengaturan Server block Nginx Berhasil!</h1>
    </body>
</html>

Save and close the file when you are finished.

Agar Nginx dapat menyajikan konten ini, Anda perlu membuat block server dengan arahan yang benar. Alih-alih memodifikasi file konfigurasi default secara langsung, mari kita buat yang baru di :

sudo nano /etc/nginx/sites-available/example.com

Copy dan Paste konfigurasi block berikut, yang mirip dengan default, tetapi diperbarui untuk direktori dan nama domain baru kami:

server {
        listen 80;
        listen [::]:80;

        root /var/www/example.com;
        index index.html index.htm index.nginx-debian.html;

        server_name example.com www.example.com;

        location / {
                try_files $uri $uri/ =404;
        }
}

Perhatikan bahwa kami telah memperbarui konfigurasi root ke direktori baru, dan server_name ke nama domain.

Selanjutnya, mari kita aktifkan file dengan membuat tautan dari situ ke direktori yang didukung situs, yang dibaca Nginx saat startup:

sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/

Untuk menghindari kemungkinan masalah memori hash bucket yang dapat timbul dari penambahan nama server tambahan, perlu untuk menyesuaikan nilai tunggal dalam file /etc/nginx/nginx.conf. Buka file:

sudo nano /etc/nginx/nginx.conf

Temukan direktif server_names_hash_bucket_size dan hapus simbol # untuk menghilangkan komentar pada baris:

...
http {
    ...
    server_names_hash_bucket_size 64;
    ...
}
...

Selanjutnya, uji untuk memastikan bahwa tidak ada kesalahan sintaks pada file Nginx Anda

sudo nginx -t

Simpan dan tutup file ketika Anda selesai.

Jika tidak ada masalah, mulai ulang Nginx untuk mengaktifkan perubahan Anda:

sudo systemctl restart nginx

Nginx sekarang harus melayani nama domain Anda. Untuk melihat pengujian konfigurasi ini dengan menavigasi ke http://example.com, Anda akan melihat sesuatu seperti ini:

server block nginx
server block nginx setelah berhasil

Kesimpulan

Sekarang setelah server web terkonfigurasi dengan baik, Anda memiliki banyak opsi untuk jenis konten yang akan ditayangkan dan teknologi yang ingin Anda gunakan.

Jika Anda ingin membuat tumpukan aplikasi yang lebih lengkap, lihat artikel ini tentang cara mengkonfigurasi LEMP Stack di Ubuntu.