NGINX adalah open-source, perangkat lunak server HTTP gratis. Selain kemampuan server HTTP, NGINX juga dapat berfungsi sebagai server proxy untuk email (IMAP, POP3, dan SMTP) dan proxy terbalik dan penyeimbang beban untuk server HTTP, TCP, dan UDP. Tujuan di balik NGINX adalah untuk menciptakan server web tercepat, dan mempertahankan keunggulan itu masih menjadi tujuan utama proyek Nginx. NGINX secara konsisten mengalahkan Apache dan server lain dalam tolok ukur yang mengukur kinerja server web dan sekarang menjadi server web paling populer yang digunakan menurut W3Tech.
Dalam tutorial berikut, Anda akan belajar menginstal Nginx di Ubuntu 20.04 LTS menggunakan repositori default Ubuntu atau PPA alternatif dari Ondřej Surý dengan sertifikat TLS/SSL gratis dari Let's Encrypt.
Prasyarat
- OS yang Disarankan: Ubuntu 20.04 atau lebih tinggi
- Akun pengguna: Akun pengguna dengan sudo atau akses root.
Memperbarui Sistem Operasi
Perbarui Ubuntu . Anda sistem operasi untuk memastikan semua paket yang ada terbaru :
sudo apt update && sudo apt upgrade
Akses Root atau Sudo
Secara default, akun yang dibuat dengan Ubuntu memberikan status sudo. Namun, misalkan Anda perlu memberikan akun tambahan akses sudo/root. Dalam hal ini, Anda harus memiliki akses ke sandi root untuk menggunakan perintah su atau kunjungi tutorial kami tentang Cara Menambahkan Pengguna ke Sudoers di Ubuntu.
Instal Nginx
Metode 1. Instal Nginx Stable dari Repositori Ubuntu
Metode pertama adalah menginstal Nginx dari repositori default Ubuntu, dan versi ini terbukti stabil dan aman. Jika Anda perlu menjalankan server web utama atau proxy terbalik, sering disarankan untuk menginstal paket repositori Ubuntu.
Untuk menginstal Nginx, jalankan perintah berikut.
sudo apt install nginx
Contoh keluaran:
Ketik “Y”, lalu tekan “ENTER KEY” untuk melanjutkan penginstalan.
Selanjutnya, verifikasi versi build dan apakah instalasi berhasil.
sudo nginx -v
Contoh keluaran:
nginx version: nginx/1.18.0
Metode 2. Instal Nginx Stable atau Mainline Terbaru dari Ondřej Surý PPA
Sebagai alternatif, daripada menginstal Nginx stable build default dari repositori Ubuntu 20.04, Anda dapat menginstal Nginx Stable atau Mainline menggunakan PPA dari Ondřej Surý pengelola PHP untuk Debian.
Instal salah satu PPA berikut dengan perintah berikut:
Instal Nginx terbaru (STABIL):
sudo add-apt-repository ppa:ondrej/nginx-stable -y && sudo apt update
Instal Nginx (MAINLINE) terbaru:
sudo add-apt-repository ppa:ondrej/nginx-mainline -y && sudo apt update
Sekarang Anda telah menginstal PPA dan perbarui daftar repositori, instal Nginx dengan yang berikut:
sudo apt install nginx-core nginx-common nginx nginx-full
Contoh keluaran:
Ketik “Y”, lalu tekan “ENTER KEY” untuk melanjutkan penginstalan.
Selanjutnya, verifikasi versi build dan apakah instalasi berhasil.
sudo nginx -v
Contoh keluaran (Dari Mainline):
nginx version: nginx/1.18.0
Sekarang periksa untuk memastikan Nginx terbaru dari repositori Ondřej Surý telah diinstal menggunakan perintah kebijakan apt-cache . Perhatikan, contoh tutorial menginstal Nginx Mainline:
apt-cache policy nginx
Contoh keluaran untuk Nginx Mainline :
Perhatikan bahwa Anda mungkin diminta untuk menyimpan atau mengganti /etc/nginx/ yang ada nginx.conf file konfigurasi selama instalasi jika Anda telah menginstal Nginx sebelumnya. Disarankan untuk menyimpan file konfigurasi Anda saat ini dengan menekan (n) . Salinan akan dibuat terlepas dari versi pengelola, dan Anda juga dapat memeriksanya di masa mendatang.
Anda akan melihat modul tambahan akan tersedia dalam versi ini, terutama dukungan brotli. Untuk memasang brotli , ikuti langkah-langkah di bawah ini.
Buka nginx.conf . Anda file konfigurasi:
nano /etc/nginx/nginx.conf
Sekarang tambahkan baris tambahan sebelumnya di HTTP{} bagian:
brotli on;
brotli_comp_level 6;
brotli_static on;
brotli_types application/atom+xml application/javascript application/json application/rss+xml
application/vnd.ms-fontobject application/x-font-opentype application/x-font-truetype
application/x-font-ttf application/x-javascript application/xhtml+xml application/xml
font/eot font/opentype font/otf font/truetype image/svg+xml image/vnd.microsoft.icon
image/x-icon image/x-win-bitmap text/css text/javascript text/plain text/xml;
brotli_comp_level dapat disetel antara 1 (terendah) dan 11 (tertinggi) . Biasanya, sebagian besar server berada di tengah, tetapi jika server Anda adalah monster, setel ke 11 dan pantau tingkat penggunaan CPU.
Selanjutnya, uji untuk memastikan perubahan berfungsi dengan benar sebelum ditayangkan:
sudo nginx -t
Jika perubahan berfungsi dengan benar, Anda akan melihat yang berikut:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Sekarang buat perubahan secara langsung dengan memulai ulang server Anda:
sudo systemctl restart nginx
sudo systemctl status nginx
Contoh keluaran:
Konfigurasi UFW
Secara default, UFW diinstal pada Ubuntu 20.04. Jika Anda menggunakan UFW atau ingin tampilan yang lebih jelas dalam menjalankan firewall, gunakan informasi di bawah ini untuk mengonfigurasi UFW untuk Nginx.
Jika UFW tidak diinstal, instal ulang firewall menggunakan perintah berikut:
sudo apt install ufw -y
Selanjutnya, aktifkan UFW dengan perintah berikut.
sudo ufw enable
Secara default, semua koneksi masuk sekarang diblokir, dan semua koneksi keluar diizinkan.
Selanjutnya, cari tahu aplikasi apa yang telah Anda instal dengan memasukkan yang berikut ini.
sudo ufw app list
Contoh keluaran (Perhatikan daftar ekstensif juga akan muncul dari aplikasi lain):
Available applications:
Nginx Full
Nginx HTTP
Nginx HTTPS
Selanjutnya, Anda dapat mengaktifkan Nginx di HTTP (Port 80), HTTPS (Port 443), atau Penuh, termasuk semua opsi.
HTTP (Port 80):
sudo ufw allow 'Nginx HTTP'
HTTP (Port 443):
sudo ufw allow 'Nginx HTTPS'
HTTP &HTTPS (Penuh):
sudo ufw allow 'Nginx FULL'
Dalam tutorial, “Nginx (Penuh)” telah diaktifkan.
Contoh keluaran:
Rules updated
Rules updated (v6)
Konfirmasikan aturan firewall aktif dengan perintah berikut.
sudo ufw status
Anda akan melihat aturan yang tercantum dalam output.
Status: active
To Action From
-- ------ ----
Nginx Full ALLOW Anywhere
Nginx Full (v6) ALLOW Anywhere (v6)
Setelah UFW dikonfigurasi, periksa untuk memastikan Anda dapat melihat halaman arahan Nginx di Browser Internet Anda.
http://your_server_ip
Jika semuanya bekerja dengan baik, Anda akan membuka halaman berikut:
Konfigurasi Server Nginx
Anda harus menyiapkan alamat IP server untuk disiapkan. Cara termudah untuk melakukannya adalah dengan yang berikut ini.
Temukan Alamat IP Server
Anda harus menyiapkan alamat IP server untuk disiapkan. Cara termudah untuk melakukannya adalah dengan yang berikut ini.
curl -4 icanhazip.com
Contoh keluaran:
XXX.XXX.XXX.XXX IP address
Jika kesalahan muncul, kemungkinan besar Anda perlu menginstal paket curl di sistem Anda. Jalankan perintah ini dengan cepat:
sudo apt install curl -y
Menyiapkan Direktori Sumber Situs
Nginx memblokir server (mirip dengan host virtual di Apache) dapat merangkum detail konfigurasi dan menghosting lebih dari satu domain dari satu server. Dalam tutorial, Anda akan menyiapkan domain bernama example.com , tetapi Anda harus menggantinya dengan nama domain Anda .
Saat Anda menginstal Nginx, itu dibuat dengan direktori www yang sudah diinstal sebelumnya. Lokasi ditemukan di /var/www/html/ .
Pertama, buat direktori, untuk example.com , sebagai berikut, menggunakan tanda “-p” untuk membuat direktori induk yang diperlukan:
sudo mkdir -p /var/www/example.com/html
Kedua, Anda perlu menetapkan pemilik direktori.
sudo chown -R $USER:$USER /var/www/your_domain/html
Ketiga, tetapkan izin direktori, sehingga pemiliknya membaca, menulis, dan mengeksekusi file sambil memberikan izin hanya membaca dan mengeksekusi ke grup dan lainnya. Anda dapat memasukkan perintah berikut:
sudo chmod -R 755 /var/www/your_domain
Siapkan halaman Uji HTML
Keempat, buat halaman pengujian yang akan Anda gunakan untuk mengonfirmasi bahwa server Nginx Anda beroperasi.
nano /var/www/your_domain/html/index.html
Di dalam editor nano dan file baru yang telah Anda buat. Masukkan yang berikut ini.
<html>
<head>
<title>Welcome to your_domain!</title>
</head>
<body>
<h1>Success! The your_domain server block is working!</h1>
</body>
</html>
Simpan file CTRL+O, lalu keluar dari CTRL+X .
Buat Blok Server Nginx
Sekarang, Anda akan membuat blok server untuk situs web Anda. Kami akan membuat blok server baru sebagai berikut.
sudo nano /etc/nginx/sites-available/your_domain.conf
Anda dapat menempelkan kode contoh berikut ke dalam blok. Ini hanya contoh khusus HTTP untuk pengujian dasar.
server {
listen 80;
listen [::]:80;
root /var/www/your_domain/html;
index index.html index.htm index.nginx-debian.html;
server_name your_domain www.your_domain;
location / {
try_files $uri $uri/ =404;
}
}
Contoh menunjukkan server Anda mendengarkan dua nama server, “domain_anda” pada port 80.
Anda perlu mengubah direktori root menjadi nama/lokasi direktori root yang Anda buat.
Aktifkan Blok Server Nginx
Untuk mengaktifkan blok server Nginx, Anda harus menautkan file konfigurasi dari situs yang tersedia ke situs yang diaktifkan di direktori Nginx Anda. Ini dapat dilakukan dengan perintah ln -s sebagai berikut.
sudo ln -s /etc/nginx/sites-available/your_domain.conf /etc/nginx/sites-enabled/
Konfigurasi Akhir &Uji coba
Pada tahap terakhir, Anda harus membuka nginx.conf default Anda berkas.
sudo nano /etc/nginx/nginx.conf
Dan batalkan komentar pada baris berikut.
server_names_hash_bucket_size 64;
Ukuran keranjang hash nama server berubah karena terkadang masalah muncul saat menambahkan server tambahan.
Selanjutnya, uji Nginx Anda untuk memastikannya berfungsi sebelum memulai ulang dengan benar.
sudo nginx -t
Outputnya harus jika tidak ada kesalahan dalam sintaks:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Jika Anda memiliki output ok berikut, mulai ulang server Nginx agar perubahan terjadi.
sudo systemctl restart nginx
Sekarang buka Browser Internet Anda dan ketik nama domain server . Anda akan melihat blok server Anda aktif.
Amankan Nginx dengan Let's Encrypt SSL Free Certificate
Idealnya, Anda ingin menjalankan Nginx di HTTPS menggunakan sertifikat SSL . Cara terbaik untuk melakukannya adalah dengan menggunakan Let's Encrypt, otoritas sertifikat gratis, otomatis, dan terbuka yang dijalankan oleh Internet Security Research Group (ISRG) nirlaba .
Pertama, instal paket certbot sebagai berikut:
sudo apt install python3-certbot-nginx -y
Setelah terinstal, jalankan perintah berikut untuk memulai pembuatan sertifikat Anda:
sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d www.example.com
Ini adalah pengaturan ideal yang mencakup pengalihan paksa HTTPS 301, header Strict-Transport-Security, dan Stapling OCSP. Pastikan untuk menyesuaikan email dan nama domain dengan kebutuhan Anda.
Sekarang URL Anda akan menjadi HTTPS://www.example.com alih-alih HTTP://www.example.com .
Perhatikan, jika Anda menggunakan URL HTTP old yang lama , secara otomatis akan dialihkan ke HTTPS .
Cara Mengakses Log Server Nginx
Direktori Log Nginx
Secara default, semua log akses/kesalahan NGINX, kecuali Anda telah mengubahnya, terletak di direktori log, yang dapat dilihat oleh perintah berikut.
Pertama, navigasikan ke direktori log dan daftar file:
cd /var/log/nginx && ls -l
Anda harus menemukan file akses dan kesalahan berikut:
Log Akses:
/var/log/nginx/access.log
Log Kesalahan:
/var/log/nginx/error.log
Untuk melihat log secara real-time di terminal Anda menggunakan perintah sudo tail -f /location/of/log path.
Contoh:
sudo tail -f /var/log/nginx/access.log
Pilihan lain adalah mencetak jumlah baris X terakhir. Misalnya, X diganti dengan 30 untuk mencetak 30 baris dengan menambahkan -n 30 bendera .
sudo tail -f /var/log/nginx/access.log -n 30
Ini hanya beberapa contoh log pembacaan.
Cara Mengonfigurasi Putar Log Nginx
Nginx secara otomatis menginstal rotasi log dan mengonfigurasinya ke default yang berputar setiap hari. Anda dapat mengubah pengaturan ini dengan mengakses file seperti yang ditunjukkan di bawah ini.
sudo nano /etc/nginx/logrotate.d/nginx
Selanjutnya, Anda akan melihat struktur file yang sama jika tidak mirip. Anda dapat mengubah konten di sini. Sebagian besar Anda dapat mengubah berapa banyak log untuk disimpan atau pergi dari harian ke mingguan. Ini harus dibiarkan default kecuali Anda memiliki kebutuhan persyaratan log khusus untuk perangkat lunak seperti pemantauan fail2ban atau yang serupa.
/var/log/nginx/*.log {
daily
missingok
rotate 14
compress
delaycompress
notifempty
create 0640 www-data adm
sharedscripts
prerotate
if [ -d /etc/logrotate.d/httpd-prerotate ]; then \
run-parts /etc/logrotate.d/httpd-prerotate; \
fi \
endscript
postrotate
invoke-rc.d nginx rotate >/dev/null 2>&1
endscript
}
Pengaturan utama yang mungkin ingin Anda ubah adalah sebagai berikut:
- Harian – Ini dapat diubah menjadi Mingguan, Bulanan. Ini harus disimpan setiap hari, jika tidak, akan sulit untuk menelusuri file log.
- Putar 14 – Ini adalah berapa banyak log yang harus disimpan dan dihapus, jadi maksimal hanya ada 14 log, jika Anda hanya ingin menyimpan log selama 7 hari, ubah ini menjadi 7.
Dianjurkan untuk tidak menyentuh pengaturan lain kecuali Anda tahu apa yang Anda lakukan.
Cara Memperbarui Nginx
Nginx akan diperbarui secara default ketika versi baru masuk ke repositori. Sebelum memutakhirkan, selalu disarankan untuk mencadangkan direktori Nginx Anda atau, paling tidak, nginx.conf mengajukan. Anda dapat melakukannya dengan perintah berikut.
Cadangkan nginx.conf (Sangat Disarankan):
sudo cp /etc/nginx/nginx.conf /etc/nginx/nginx-backup.conf
Cadangkan seluruh folder Nginx Anda jika Anda mau:
sudo cp /etc/nginx/ /etc/nginx-bkup
Selanjutnya, jalankan perintah pembaruan standar.
sudo apt update
Jika upgrade tersedia, jalankan upgrade.
sudo apt upgrade
Anda mungkin dimintai ini selama peningkatan atau pemasangan, tetapi melakukan ini secara manual sebelumnya cukup penting. Untuk konfigurasi Nginx besar dari beberapa situs, mencadangkan ke sesuatu seperti Github atau Gitlab akan lebih bermanfaat.