Nginx Web Server di Ubuntu 22.04 LTS

Syslab.id – Tutorial kali ini kami akan membahas tentang Nginx web server di Ubuntu 22.04 LTS

Apa itu Nginx Web Server

Nginx dibaca (engine-x) adalah server web sumber terbuka (open source) dan gratis yang banyak digunakan oleh para pengembang dan administrator web di seluruh dunia.

Nginx adalah web server yang dibuat untuk mengatasi keterbatasan server web tradisional, seperti Apache. Pertama kali dirilis pada tahun 2004 oleh Igor Sysoev, seorang insinyur perangkat lunak asal Rusia. Nginx dirancang untuk menangani koneksi concurrent connections, yang membuatnya ideal untuk menyajikan konten statis dalam jumlah besar, serta untuk load balancing dan reverse proxy.

Fitur Utama Nginx

Salah satu fitur utama dari Nginx adalah kemampuannya untuk menangani sejumlah besar koneksi bersamaan. Hal ini membuatnya ideal untuk menyajikan konten statis dalam jumlah besar, serta untuk penyeimbangan beban dan proksi balik.

  • High performance : Nginx dirancang untuk bekerja dengan cepat dan efisien, sehingga sangat cocok untuk situs web yang high-traffice.
  • Lightweight : Nginx menggunakan sumber daya sistem yang minimal, memungkinkan untuk menangani lebih banyak koneksi dengan jumlah server yang lebih sedikit.
  • Scalability : Nginx mudah di-scale secara horizontal, artinya Anda dapat menambahkan lebih banyak server seiring pertumbuhan traffice web Anda.
  • Reverse proxying : Nginx dapat digunakan sebagai reverse proxy, yaitu bertindak sebagai perantara antara klien dan server.
  • Load balancing : Nginx juga dapat digunakan sebagai load balancer, yaitu mendistribusikan traffice masuk ke beberapa server.
  • SSL Termination : Nginx dapat melakukan terminasi SSL, yaitu mendekripsi lalu lintas SSL dan meneruskannya ke server backend dalam format HTTP biasa.

Arsitektur Nginx

Untuk memahami Nginx, penting untuk memahami arsitekturnya. Nginx dibangun menggunakan model master-worker, di mana proses master bertugas menangani permintaan masuk dan mengelola proses worker yang sebenarnya memproses permintaan tersebut.

  • Proses Master : Bertanggung jawab untuk membaca file konfigurasi, memulai proses worker, dan mengelola their lifecycle.
  • Proses Worker : Bertugas menangani permintaan masuk dan mengirimkan respons kembali ke klien.

Komponen Nginx

Nginx terdiri dari beberapa komponen utama, yaitu:

  1. Core
    Komponen inti Nginx mencakup proses master dan proses worker yang menangani permintaan masuk.
  2. Modules
    Nginx memiliki arsitektur modular yang memungkinkan pengguna menambahkan atau menghapus fungsionalitas sesuai kebutuhan.
  3. Configuration
    Nginx memiliki sistem konfigurasi yang sederhana dan fleksibel, sehingga mudah dipahami dan dimodifikasi.
  4. Logging
    Nginx dilengkapi dengan sistem pencatatan (logging) bawaan yang dapat digunakan untuk melacak permintaan dan kesalahan.

Cara Kerja Nginx

Secara sederhana, NGINX bekerja dengan menerima permintaan dari klien atau user (misalnya browser) dan memprosesnya lewat serangkaian modul dan konfigurasi untuk menyajikan konten yang sesuai. Jadi, kalau ada klien yang mengirim permintaan, NGINX akan nerima permintaan itu dan meneruskannya ke server block yang sesuai. Server block ini punya aturan tentang cara menangani permintaan tersebut.

Nginx menggunakan arsitektur multi-proses dan berbasis event, jadi bisa menangani permintaan dengan efisien. Begitu ada permintaan, Nginx bakal menyerahkannya ke proses worker, yang tugasnya memproses permintaan itu dan ngirim respons kembali ke klien. Dengan cara ini, Nginx bisa menangani banyak permintaan sekaligus tanpa gampang kewalahan.

Instalasi Nginx Web Server

Secara default Nginx sudah ada di repository Ubuntu 22.04 LTS dan dapat langsung di install. Terdapat 2 cara melakukan instalasi Nginx Web Server di Ubuntu 22.04 LTS diantaranya:

1. Install Nginx Menggunakan Repository

Untuk melakukan instalasi Nginx menggunakan default repository yang ada di Ubuntu 22.04 LTS sangatlah mudah Anda hanya perlu update sistem operasi Ubuntu dan proses install Nginx sebagai berikut:

root@syslab:~# apt update -y
root@syslab:~# apt install nginx -y

2. Install Nginx Secara Manual

Untuk melakukan instalasi Nginx secara manual Anda perlu menginstall dependency yang dibutuhkan terlebih dahulu berikut

root@syslab:~# apt install -y curl gnupg2 ca-certificates lsb-release ubuntu-keyring 

Kemudian menambahkan Nginx signing key

root@syslab:~# curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor | tee /usr/share/keyrings/nginx-archive-keyring.gpg > /dev/null 2>&1
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 11809  100 11809    0     0  16275      0 --:--:-- --:--:-- --:--:-- 16265
root@syslab:~# 
root@syslab:~# gpg --dry-run --quiet --no-keyring --import --import-options import-show /usr/share/keyrings/nginx-archive-keyring.gpg 
pub   rsa4096 2024-05-29 [SC]
      8540A6F18833A80E9C1653A42FD21310B49F6B46
uid                      nginx signing key <signing-key-2@nginx.com>

pub   rsa2048 2011-08-19 [SC] [expires: 2027-05-24]
      573BFD6B3D8FBC641079A6ABABF5BD827BD9BF62
uid                      nginx signing key <signing-key@nginx.com>

pub   rsa4096 2024-05-29 [SC]
      9E9BE90EACBCDE69FE9B204CBCDCD8A38D88A2B3
uid                      nginx signing key <signing-key-3@nginx.com>

root@syslab:~# 
root@syslab:~# 

Jika sudah, tambahkan repository Nginx terlebih dahulu. Untuk repository Nginx Anda dapat menyesuaikan nya mau menggunakan yang stable version atau yang lainnya.

root@syslab:~# echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] http://nginx.org/packages/ubuntu $(lsb_release -cs) nginx" | tee /etc/apt/sources.list.d/nginx.list 
deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] http://nginx.org/packages/ubuntu jammy nginx
root@syslab:~#

Konfigurasi priority repository Nginx

root@syslab:~# echo -e "Package: *\nPin: origin nginx.org\nPin: release o=nginx\nPin-Priority: 900\n" | tee /etc/apt/preferences.d/99nginx
Package: *
Pin: origin nginx.org
Pin: release o=nginx
Pin-Priority: 900

root@syslab:~# 

Update sistem operasi Ubuntu Anda kemudian install Nginx menggunakan perintah berikut

root@syslab:~# apt update
root@syslab:~# apt autoremove -y
root@syslab:~# apt install -y nginx 
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following NEW packages will be installed:
  nginx
0 upgraded, 1 newly installed, 0 to remove and 86 not upgraded.
Need to get 1142 kB of archives.
After this operation, 3697 kB of additional disk space will be used.
Get:1 http://nginx.org/packages/ubuntu jammy/nginx amd64 nginx amd64 1.26.2-1~jammy [1142 kB]
Fetched 1142 kB in 1s (858 kB/s)
Selecting previously unselected package nginx.
(Reading database ... 94657 files and directories currently installed.)
Preparing to unpack .../nginx_1.26.2-1~jammy_amd64.deb ...

Saat ini Anda sudah berhasil melakukan instalasi Nginx secara manual di Ubuntu 22.04 LTS. Catatan untuk konfigurasi selanjutnya kami akan menggunakan instalasi Nginx secara manual ini karena terdapat perbedaan direktori konfigurasi jika Anda melakukan instalasi Nginx secara default repository dengan secara manual di Ubuntu perbedaannya sebagai berikut:

Directory Default Install Nginx Secara Manual : /etc/nginx/conf.d

Directory Default Install Nginx Default Repository : /etc/nginx/sites-available/ dan /etc/nginx/sites-enabled/

Manajemen Nginx

Untuk melakaukan manajemen service Nginx di Ubuntu 22.04 LTS sangat mudah, Anda dapat menggunakan systemd untuk proses manajemen service Nginx seperti start, stop, reload dan cek status nginx contoh nya seperti berikut:

root@syslab:/etc/nginx/conf.d# systemctl start nginx
root@syslab:/etc/nginx/conf.d# systemctl stop nginx
root@syslab:/etc/nginx/conf.d# systemctl restart nginx
root@syslab:/etc/nginx/conf.d# systemctl status nginx
● nginx.service - nginx - high performance web server
     Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
     Active: active (running) since Wed 2024-11-27 15:31:04 UTC; 7s ago
       Docs: https://nginx.org/en/docs/
    Process: 64270 ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf (code=exited, status=0/SUCCESS)
   Main PID: 64271 (nginx)
      Tasks: 3 (limit: 1023)
     Memory: 3.2M
        CPU: 24ms
     CGroup: /system.slice/nginx.service
             ├─64271 "nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf"
             ├─64272 "nginx: worker process" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" ""
             └─64273 "nginx: worker process" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" ""

Nov 27 15:31:04 syslab.syslab.id systemd[1]: Starting nginx - high performance web server...
Nov 27 15:31:04 syslab.syslab.id systemd[1]: Started nginx - high performance web server.
root@syslab:/etc/nginx/conf.d# 

Enable nginx juga bisa menggunakan systemd, dengan enable nginx maka nginx akan otomatis running jika server melakukan reboot

root@syslab:/etc/nginx/conf.d# systemctl enable nginx
Synchronizing state of nginx.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable nginx
root@syslab:/etc/nginx/conf.d# 

Verifikasi Akes Nginx Web Server

Jika sudah melakukan instalasi nginx dan sudah dipastikan nginx running, Anda dapat melakukan verifikasi akses Nginx dari browser dengan cara akses IP Server Anda

Konfigurasi Virtual Host (Server Block) Nginx

Virtual Host (AKA Server Block) biasanya digunakan untuk melakukan hosting website di web server Nginx. Misalnya Anda mempunyai domain apriori.my.id dan subdomain sub.apriori.my.id maka Anda dapat menghost domain dan subdomain di web server Nginx dengan cara membuat Server Block Nginx.

Membuat Direktori Proyek Website

Sebelum membuat Virtual Host, siapkan direktori untuk proyek web Anda. Secara default, direktori ini berada di /var/www/html/namadomain. Berikut adalah langkah untuk membuat direktori dan file sederhana

root@syslab:~# mkdir -p /var/www/html/apriori.my.id
root@syslab:~# mkdir -p /var/www/html/apriori.my.id/public_html/
root@syslab:~# mkdir -p /var/www/html/apriori.my.id/sub.apriori.my.id
root@syslab:~# echo "Test Page Nginx Syslab.iD" >> /var/www/html/apriori.my.id/public_html/index.html
root@syslab:~# 

Kemudian, berikan permission dan ownership untuk directory yang sudah kita buat dengan cara sebagai berikut:

root@syslab:~# chown -R www-data:www-data /var/www/html/apriori.my.id/public_html/
root@syslab:~# chmod -R 755 /var/www/html/apriori.my.id/public_html/
root@syslab:~#

Membuat Virtual Host (Server Block) Nginx

Seperti yang disampaikan sebelumnya untuk membuat server block nginx Anda dapat membuat nya di directory /etc/nginx/conf.d/ dengan penamaan file contoh apriori.my.id.conf dan berikut sample konfigurasi server block nginx

root@syslab:~# cd /etc/nginx/conf.d/
root@syslab:/etc/nginx/conf.d# vim apriori.my.id.conf

Berikut sample konfigurasi nginx untuk host web html

server {
    server_name apriori.my.id;
    root /var/www/html/apriori.my.id/public_html;

    index index.html index.htm;

    access_log /var/log/nginx/apriori.my.id.access.log;
    error_log /var/log/nginx/apriori.my.id.error.log;

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

    location ~* \.(jpg|jpeg|png|gif|ico|css|js|svg|woff|woff2|ttf|eot|otf)$ {
        expires 30d;
        access_log off;
    }
}

Test Konfigurasi Virtual Host (Server Block)

Jika sudah dilakukan konfigurasi Anda perlu test terlebih dahulu konfigurasi Nginx nya apakah sudah tidak ada error atau masih ada warning atau error pada konfigurasi dengan menggunakan perintah nginx -t hasilnya akan nampak seperti berikut

root@syslab:/etc/nginx/conf.d# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
root@syslab:/etc/nginx/conf.d#

Terlihat dari output diatas dimana syntax is OK dalam artinya konfigurasi sudah benar dan tidak ada error. Jika sudah selanjutnya Anda dapat restart terlebih dahulu service nginx

root@syslab:/etc/nginx/conf.d# systemctl restart nginx
root@syslab:/etc/nginx/conf.d# systemctl status nginx

Test Akses Website

Setelah konfigurasi selesai, verifikasi akses melalui browser. Ketikkan http://apriori.my.id di browser seperti berikut

Atau Anda juga bisa menggunakan command curl seperti berikut

Nurs-MacBook-Air :: ~ curl -4 apriori.my.id                                                                                       127 ↵
Test Page Nginx Syslab.iD
Nurs-MacBook-Air :: ~ » 

Konfigurasi SSL di Nginx Web Server

Tahapan selanjutnya yaitu bagaimana cara konfigurasi SSL. Untuk SSL sendiri ada 2 pilihan bisa menggunakan yang gratis dengan cara memanfaatkan certbot atau Let’s Encrypt atau Anda bisa menggunakan SSL yang berbayar.

Pada contoh kali ini kami menggunakna SSL Let’s Encrypt yang sudah kami generate sebelumnya dan kami simpan SSL nya di directory /etc/nginx/ssl seperti berikut

root@syslab:~# mkdir -p /etc/nginx/ssl
root@syslab:~# ll /etc/nginx/ssl/
total 28
drwxr-xr-x 2 root root 4096 Nov 27 16:20 ./
drwxr-xr-x 4 root root 4096 Nov 27 16:19 ../
-rw-r--r-- 1 root root  692 Nov 27 16:20 README
-rw-r--r-- 1 root root 1793 Nov 27 16:20 cert.pem
-rw-r--r-- 1 root root 1801 Nov 27 16:20 chain.pem
-rw-r--r-- 1 root root 3594 Nov 27 16:20 fullchain.pem
-rw------- 1 root root 1708 Nov 27 16:20 privkey.pem
root@syslab:~# 

Buka kembali konfigurasi server block nginx domain apriori.my.id.conf dah tambahkan konfigurasi SSL seperti berikut

server {
    server_name apriori.my.id;
    root    /var/www/html/apriori.my.id/public_html/;
    index  index.html;
    access_log /var/log/nginx/apriori.my.id.access.log;
    error_log /var/log/nginx/apriori.my.id.error.log;

    location / {
        try_files $uri $uri/ /index.html?$args;
    }

    location ~*  \.(jpg|jpeg|png|gif|ico|css|js)$ {
        expires 30d;
    }

    listen 443 ssl; 
    ssl_certificate /etc/nginx/ssl/fullchain.pem; 
    ssl_certificate_key /etc/nginx/ssl/privkey.pem; 

}
server {
    if ($host = apriori.my.id) {
        return 301 https://$host$request_uri;
    } # managed by Certbot


    server_name apriori.my.id;
    listen 80;
    return 404; 
}

Verifikasi config nginx dan restart nginx

root@syslab:/etc/nginx/conf.d# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
root@syslab:/etc/nginx/conf.d# 
root@syslab:/etc/nginx/conf.d# systemctl restart nginx
root@syslab:/etc/nginx/conf.d# systemctl status nginx
● nginx.service - nginx - high performance web server
     Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
     Active: active (running) since Wed 2024-11-27 16:27:37 UTC; 5s ago
       Docs: https://nginx.org/en/docs/
    Process: 64601 ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf (code=exited, status=0/SUCCESS)
   Main PID: 64602 (nginx)
      Tasks: 3 (limit: 1023)
     Memory: 3.4M
        CPU: 15ms
     CGroup: /system.slice/nginx.service
             ├─64602 "nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf"
             ├─64603 "nginx: worker process" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" ""
             └─64604 "nginx: worker process" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" ""

Nov 27 16:27:37 syslab.syslab.id systemd[1]: Starting nginx - high performance web server...
Nov 27 16:27:37 syslab.syslab.id systemd[1]: Started nginx - high performance web server.
root@syslab:/etc/nginx/conf.d# 

Verifikasi Akses Website

Jika sudah melakukan pemasangan SSL seperti diatas, Anda dapat verifikasi akses kembali melalui web browser seperti gambar dibawah ini

Sampai tahap ini Anda sudah berhasil melakukan instalasi nginx di Ubuntu 22.04 LTS

Selamat mencoba 🔥

Tagged with:
LSA

Penulis dan pengelola konten di Syslab ID. Dengan latar belakang di bidang sistem administrasi dan IT infrastruktur, Admin Syslab bertujuan untuk menyediakan materi yang mudah dipahami dan bermanfaat bagi pemula yang ingin memulai karir di dunia IT, khususnya dalam sistem operasi, virtualisasi, dan automasi

You might also like
Manajemen User di Ubuntu 22.04 LTS

Manajemen User di Ubuntu 22.04 LTS

Nginx Reverse Proxy di Ubuntu 22.04 LTS

Nginx Reverse Proxy di Ubuntu 22.04 LTS

Instalasi PHP di Ubuntu Server 22.04 LTS

Instalasi PHP di Ubuntu Server 22.04 LTS

Cara Menjalankan Apache dan Nginx Secara Bersamaan di Ubuntu 22.04 LTS

Cara Menjalankan Apache dan Nginx Secara Bersamaan di Ubuntu 22.04 LTS

Apache Web Server di Ubuntu 22.04 LTS

Apache Web Server di Ubuntu 22.04 LTS

Mengenal Apa itu Web Server

Mengenal Apa itu Web Server