Nginx adalah salah satu server web terpopuler di dunia dan berperan sebagai hos dari sebagian situs terbesar dan situs yang memiliki lalu lintas tertinggi di jagad internet. Ini adalah pilihan ringan yang dapat digunakan baik sebagai server web atau proksi balik.
Dalam panduan ini, kita akan membahas cara menginstal Nginx pada server Ubuntu 20.04 Anda, menyesuaikan firewall, mengelola proses Nginx, dan menyiapkan blok server untuk menjadi hos dari lebih dari satu domain dari suatu server tunggal.
Sebelum Anda memulai panduan ini, Anda harus memiliki pengguna non-root reguler dengan privilese sudo yang terkonfigurasi di server Anda. Anda dapat mempelajari cara mengonfigurasi akun pengguna reguler dengan mengikuti Panduan penyiapan server awal untuk Ubuntu 20.04 dari kami.
Ketika Anda sudah memiliki akun, log masuk sebagai pengguna non-root untuk memulai.
Karena Nginx tersedia di repositori asali Ubuntu, maka kita dimungkinkan untuk menginstalnya dari repositori ini menggunakan sistem pengemasan apt
.
Karena ini adalah interaksi pertama kita dengan sistem pengemasan apt
pada sesi ini, kita akan memperbarui indeks pengemasan lokal agar kita memiliki akses ke daftar paket terbaru. Setelah itu, kita dapat menginstal nginx
:
- sudo apt update
- sudo apt install nginx
Setelah menerima prosedur, apt
akan menginstal Nginx dan segala dependensi yang diperlukan ke server Anda.
Sebelum menguji Nginx, perangkat lunak firewall perlu disesuaikan untuk mengizinkan akses ke layanan. Nginx mendaftarkan dirinya sendiri sebagai sebagai layanan dengan ufw
pada saat instalasi, yang mempermudah untuk mengizinkan akses Nginx.
Buat daftar konfigurasi aplikasi yang mana ufw
mengetahui cara bekerja sama dengannya dengan mengetik:
- sudo ufw app list
Anda akan mendapat daftar profil aplikasi:
OutputAvailable applications:
Nginx Full
Nginx HTTP
Nginx HTTPS
OpenSSH
Seperti yang ditunjukkan oleh keluaran, ada tiga profil yang tersedia untuk Nginx:
Anda disarankan untuk mengaktifkan profil yang paling ketat yang masih akan mengizinkan lalu lintas yang telah Anda konfigurasikan. Saat ini, kita hanya perlu mengizinkan lalu lintas pada porta 80.
Anda dapat mengaktifkan ini dengan mengetik:
- sudo ufw allow 'Nginx HTTP'
Anda dapat memverifikasi perubahan dengan mengetik:
- sudo ufw status
Keluaran akan mengindikasikan lalu lintas HTTP mana yang diizinkan:
OutputStatus: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
Nginx HTTP ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Nginx HTTP (v6) ALLOW Anywhere (v6)
Pada akhir proses instalasi, Ubuntu 20.04 memulai Nginx. Server web seharusnya sudah aktif dan berjalan.
Kita dapat memeriksa dengan sistem init systemd
untuk memastikan layanan sedang 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 2020-04-20 16:08:19 UTC; 3 days ago
Docs: man:nginx(8)
Main PID: 2369 (nginx)
Tasks: 2 (limit: 1153)
Memory: 3.5M
CGroup: /system.slice/nginx.service
├─2369 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
└─2380 nginx: worker process
Sebagaimana dikonfirmasi oleh keluaran ini, layanan telah berhasil dimulai. Namun, cara terbaik untuk menguji ini adalah dengan benar-benar meminta suatu laman dari Nginx.
Anda dapat mengakses laman landas Nginx asali untuk mengonfirmasi bahwa perangkat lunak berjalan dengan baik dengan bernavigasi ke alamat IP server Anda. Jika Anda tidak mengetahui alamat IP server Anda, Anda dapat menemukannya dengan menggunakan alat icanhazip.com, yang akan memberi Anda alamat IP publik Anda sebagaimana diterima dari lokasi lain di internet:
- curl -4 icanhazip.com
Saat Anda memiliki alamat IP server Anda, masukkan alamat itu ke dalam bilah alamat peramban Anda:
http://your_server_ip
Anda akan menerima laman landas Nginx asali:
Jika Anda berada di laman ini, server Anda berjalan dengan benar dan siap untuk dikelola.
Karena kini server web Anda sudah aktif dan berjalan, mari kita tinjau beberapa perintah manajemen dasar.
Untuk menghentikan server web Anda, ketik:
- sudo systemctl stop nginx
Untuk memulai server web saat berhenti, ketik:
- sudo systemctl start nginx
Untuk menghentikan lalu memulai layanan lagi, ketik:
- sudo systemctl restart nginx
Jika Anda hanya membuat perubahan konfigurasi, Nginx seringkali dapat memuat ulang tanpa memutus koneksi. Untuk melakukan ini, ketik:
- sudo systemctl reload nginx
Secara asali, Nginx dikonfigurasikan untuk memulai secara otomatis saat server melakukan boot. Jika ini bukan apa yang Anda inginkan, Anda dapat menonaktifkan perilaku ini dengan mengetik:
- sudo systemctl disable nginx
Untuk mengaktifkan kembali layanan agar memulai saat boot, Anda dapat mengetik:
- sudo systemctl enable nginx
Anda kini telah mempelajari perintah manajemen dasar dan siap untuk mengonfigurasi situs untuk menjadi hos dari lebih dari satu domain.
Ketika menggunakan server web Nginx, blok server (serupa dengan hos virtual di Apache) dapat digunakan untuk mengenkapsulasi detail konfigurasi dan menjadi hos untuk lebih dari satu domain dari suatu server tunggal. Kita akan menyiapkan domain bernama your_domain, tetapi Anda harus menggantinya dengan nama domain Anda sendiri. Untuk mempelajari lebih lanjut tentang menyiapkan nama domain dengan DigitalOcean, silakan merujuk ke Pengantar DNS DigitalOcean yang kami sediakan.
Nginx pada Ubuntu 20.04 memiliki satu blok server yang diaktifkan secara asali, yang dikonfigurasi untuk menampilkan dokumen dari suatu direktori di /var/www/html
. Meskipun ini berfungsi baik untuk situs tunggal, ini bisa menjadi sulit dijalankan jika Anda menjadi hos dari beberapa situs. Alih-alih memodifikasi /var/www/html
, mari kita buat suatu struktur direktori di dalam /var/www
untuk situs your_domain kita, dengan membiarkan /var/www/html
sebagai direktori asali yang akan ditampilkan jika permintaan klien tidak cocok dengan situs lain apa pun.
Buat direktori untuk your_domain sebagai berikut, dengan menggunakan bendera -p
untuk menciptakan direktori induk apa pun yang diperlukan:
- sudo mkdir -p /var/www/your_domain/html
Selanjutnya, tentukan kepemilikan direktori dengan variabel lingkungan $USER
:
- sudo chown -R $USER:$USER /var/www/your_domain/html
Izin root web Anda seharusnya benar jika Anda belum mengubah nilai umask
Anda, yang menetapkan izin berkas asali. Untuk memastikan izin Anda benar dan memperbolehkan pemilik untuk membaca, menulis, dan mengeksekusi berkas, sementara hanya memperbolehkan membaca dan mengeksekusi ke grup dan lainnya, Anda dapat memasukkan perintah berikut:
- sudo chmod -R 755 /var/www/your_domain
Selanjutnya, buat laman index.html
dengan menggunakan nano
atau editor favorit Anda:
- nano /var/www/your_domain/html/index.html
Di dalam, tambahkan HTML sampel 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 dan tutup berkas dengan menekan CTRL
dan X
lalu Y
dan ENTER
saat Anda selesai.
Agar Nginx menyajikan konten ini, maka diperlukan untuk menciptakan blok server dengan arahan yang benar. Alih-alih memodifikasi berkas konfigurasi asali secara langsung, mari kita buat yang baru di /etc/nginx/sites-available/your_domain
:
- sudo nano /etc/nginx/sites-available/your_domain
Tempel di blok konfigurasi berikut, yang serupa dengan yang asali, tetapi diperbarui untuk nama domain dan direktori baru kita:
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;
}
}
Perhatikan bahwa kita telah memperbarui konfigurasi root
ke direktori baru kita, dan server_name
ke nama domain kita.
Selanjutnya, mari kita mengaktifkan berkas dengan menciptakan tautan darinya ke direktori sites-enabled
, yang dibaca Nginx selama memulai:
- sudo ln -s /etc/nginx/sites-available/your_domain /etc/nginx/sites-enabled/
Dua blok server sekarang telah diaktifkan dan dikonfigurasi untuk merespons permintaan berdasarkan arahan listen
dan server_name
(Anda dapat membaca lebih lanjut tentang cara Nginx memproses arahan ini di sini):
your_domain
: Akan merespons permintaan untuk your_domain
dan www.your_domain
.asali
: Akan merespons permintaan apa pun pada porta 80 yang tidak cocok dengan dua blok lainnya.Untuk menghindari masalah memori hash bucket yang dapat muncul dari penambahan nama server tambahan, maka diperlukan untuk menyesuaikan satu nilai dalam berkas /etc/nginx/nginx.conf
. Buka berkas:
- sudo nano /etc/nginx/nginx.conf
Cari arahan server_names_hash_bucket_size
dan hapus simbol #
untuk menghapus komentar pada baris itu. Jika Anda menggunakan nano, Anda dapat dengan cepat mencari kata-kata di dalam berkas dengan menekan CTRL
dan w
.
...
http {
...
server_names_hash_bucket_size 64;
...
}
...
Simpan dan tutup berkas saat Anda sudah selesai.
Selanjutnya, uji untuk memastikan bahwa tidak ada kesalahan sintaks pada berkas Nginx Anda:
- sudo nginx -t
Jika tidak ada masalah apa pun, mulai kembali Nginx untuk mengaktifkan perubahan Anda:
- sudo systemctl restart nginx
Nginx sekarang seharusnya menyajikan nama domain Anda. Anda dapat menguji ini dengan bernavigasi ke http://your_domain
, di mana Anda akan melihat sesuatu seperti ini:
Setelah Anda mengetahui cara mengelola layanan Nginx, Anda perlu waktu beberapa menit untuk membiasakan diri dengan beberapa direktori dan berkas penting.
/var/www/html
: Konten web yang sebenarnya, yang secara asali hanya terdiri dari halaman Nginx asali yang Anda lihat sebelumnya, disajikan dari direktori /var/www/html
. Ini dapat diubah dengan mengubah berkas konfigurasi Nginx./etc/nginx
: Direktori konfigurasi Nginx. Semua berkas konfigurasi Nginx berada di sini./etc/nginx/nginx.conf
: Berkas konfigurasi Nginx utama. Ini dapat diubah untuk membuat perubahan pada konfigurasi global Nginx./etc/nginx/sites-available/
: Direktori tempat blok server per situs dapat disimpan. Nginx tidak akan menggunakan berkas konfigurasi yang ditemukan dalam direktori ini kecuali berkas tersebut terhubung ke direktori sites-enabled
. Biasanya, semua konfigurasi blok server dilakukan dalam direktori ini, lalu diaktifkan dengan menghubungkannya ke direktori lain./etc/nginx/sites-enabled/
: Direktori tempat blok server yang diaktifkan per situs disimpan. Biasanya, ini dibuat dengan menghubungkan ke berkas konfigurasi yang ditemukan dalam direktori sites-available
./etc/nginx/snippets
: Direktori ini berisi fragmen konfigurasi yang dapat disertakan di tempat lain dalam konfigurasi Nginx. Segmen konfigurasi yang berpotensi dapat diulang adalah kandidat yang baik untuk pemfaktoran ulang menjadi snippet./var/log/nginx/access.log
: Setiap permintaan ke server web Anda direkam dalam berkas log ini kecuali Nginx dikonfigurasi untuk tidak melakukannya./var/log/nginx/error.log
: Setiap kesalahan Nginx akan direkam dalam log ini.Kini server web Anda telah terinstal, Anda memiliki banyak pilihan untuk tipe konten yang dilayani dan teknologi yang Anda ingin gunakan untuk menciptakan pengalaman yang lebih kaya.
Jika Anda ingin membangun tumpukan aplikasi yang lebih lengkap, bacalah artikel Cara Menginstal Linux, Nginx, MySQL, PHP (tumpukan LEMP) pada Ubuntu 20.04.
Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.
This textbox defaults to using Markdown to format your answer.
You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!