Memasang Nginx dan memublikasikan situs melalui HTTP serta HTTPS
Untuk memublikasikan situs Nginx, instalasi paket harus disertai jalur konten, port yang mendengarkan koneksi, kebijakan firewall, DNS, dan sertifikat TLS yang sesuai. Verifikasi halaman melalui HTTP secara lokal terlebih dahulu, lalu uji koneksi dari luar dan domain sebelum memasang serta memeriksa HTTPS.
Gunakan diagnosis per lapisan jaringan untuk kegagalan koneksi dan perlindungan firewall serta akun sebelum membuka layanan. Domain Name System (DNS) memetakan nama domain ke alamat, sedangkan Transport Layer Security (TLS) melindungi komunikasi HTTPS. Versi Nginx dan alat sertifikat bergantung pada repositori; ikuti dokumentasi yang sesuai dengan paket terpasang dan distribusi Anda.
Acuan latihan adalah mesin virtual (VM) dengan instalasi biasa Ubuntu 26.04 LTS, yaitu rilis dukungan jangka panjang, atau Rocky Linux seri 9. Konfigurasi layanan dan paket pada kontainer, Windows Subsystem for Linux (WSL), dan rilis lain dapat berbeda. Siapkan akses konsol pemulihan dan catat versi melalui panduan persiapan VM berbahasa Inggris.
Menyiapkan server, nama situs, dan kebijakan akses
Gunakan server latihan Ubuntu atau Rocky Linux dengan sudo dan akses konsol. Nama linux-course.test hanya untuk pengujian lokal, bukan nama yang akan didaftarkan dalam DNS publik. Untuk publikasi, ganti dengan domain nyata yang Anda kendalikan. Jika memakai Network Address Translation (NAT), periksa penerusan port, alamat publik router, dan pembatasan penyedia jaringan. Pastikan port 80 atau 443 belum digunakan layanan lain yang akan berbenturan.
sudo ss -lntp
cat /etc/os-release
Memasang paket Nginx sesuai distribusi
Blok pertama untuk Ubuntu, blok kedua untuk Rocky Linux. Tinjau perubahan paket dan patuhi kebijakan repositori. Penghubung && menghentikan rangkaian jika langkah sebelumnya gagal. Jangan menghapus konfigurasi situs lain atau konfigurasi bawaan secara sembarangan; tambahkan server block terpisah.
sudo apt update &&
sudo apt install nginx curl &&
sudo systemctl enable --now nginx
sudo dnf install nginx curl &&
sudo systemctl enable --now nginx
Jika aktivasi layanan gagal, periksa status dan konflik listener sebelum melanjutkan. Paket dapat memasang atau mengaktifkan halaman bawaan; saat memakai alamat publik, batasi akses pengujian sesuai kebutuhan sejak awal. Berhasil memasang paket belum membuktikan situs baru telah dilayani.
Membuat document root dan konfigurasi lengkap terpisah
Document root adalah direktori yang menjadi dasar pencarian berkas situs. Contoh ini memakai /var/www/linux-course dan konfigurasi /etc/nginx/conf.d/linux-course.conf. Sebelum menjalankannya, pastikan kedua jalur belum digunakan, termasuk sebagai symbolic link; jika sudah ada, cadangkan dan pilih nama latihan lain secara konsisten. Gunakan server latihan tanpa penyuntingan konfigurasi bersamaan.
Contoh mengasumsikan nginx.conf paket memasukkan conf.d/*.conf di dalam konteks http. Periksa struktur include yang sebenarnya; validasi sintaks saja tidak membuktikan berkas yang tidak di-include telah dimuat. Perintah mkdir sengaja gagal bila document root sudah ada. Penulisan konfigurasi memakai noclobber agar berkas yang sudah ada tidak ditimpa, dan setiap kegagalan menghentikan blok.
(
sudo mkdir -m 755 /var/www/linux-course || exit 1
printf '<!doctype html><html lang="id"><meta charset="utf-8"><title>Kursus Linux</title><h1>Server kursus Linux berfungsi</h1></html>\n' | sudo tee /var/www/linux-course/index.html > /dev/null || exit 1
sudo chmod 644 /var/www/linux-course/index.html || exit 1
sudo sh -c 'set -C; cat > "$1"' sh /etc/nginx/conf.d/linux-course.conf <<'EOF' || exit 1
server {
listen 80;
server_name linux-course.test;
root /var/www/linux-course;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
EOF
sudo nginx -t
)
Tag h1 di atas berada dalam halaman HTML latihan yang akan dilayani server, bukan judul di dalam artikel WordPress ini. Kutipan pada pembatas 'EOF' menjaga $uri sebagai variabel Nginx, sehingga tidak diperluas oleh shell saat berkas dibuat. Server block mempertahankan pencarian berkas dan respons 404 untuk jalur yang tidak ditemukan.
Jika pembuatan berhenti di tengah jalan, direktori atau berkas yang sudah dibuat dapat tetap ada; tidak ada pembatalan otomatis. Periksa hasilnya sebelum mengulang. Jalankan reload hanya setelah nginx -t berhasil. Jika ada galat, perbaiki berkas dan baris yang disebutkan, lalu validasi lagi tanpa menghentikan layanan yang masih bekerja.
sudo nginx -t &&
sudo systemctl reload nginx &&
curl -i --noproxy "*" --resolve linux-course.test:80:127.0.0.1 http://linux-course.test/
Harapkan HTTP 200 dan teks Server kursus Linux berfungsi. Opsi --resolve memberi pemetaan nama ke alamat hanya untuk permintaan curl ini, tanpa mengubah DNS sistem. --noproxy "*" memastikan pengujian loopback tidak dialihkan melalui proxy yang dikonfigurasi pada lingkungan klien. Jika yang tampil halaman bawaan, cocokkan Host yang diminta, server_name, dan konfigurasi yang benar-benar dimuat.
Membedakan akses berkas dan akses jaringan
Pada Rocky Linux dengan Security-Enhanced Linux (SELinux), periksa label melalui ls -Zd /var/www/linux-course. Untuk jalur sesuai kebijakan standar, sudo restorecon -Rv /var/www/linux-course dapat memulihkan label yang semestinya. Jalur tidak standar mungkin memerlukan aturan label permanen. Jangan menyelesaikan HTTP 403 dengan menonaktifkan SELinux atau memberi izin 777.
Setelah respons lokal terverifikasi, izinkan HTTP 80/tcp, kemudian HTTPS 443/tcp, dalam lingkup yang diperlukan. UFW dapat menambahkan aturan port tertentu, misalnya sudo ufw allow 80/tcp. Pada firewalld, uji layanan http atau https di zona yang benar melalui konfigurasi runtime sebelum menyimpan hanya aturan tersebut sebagai permanent. Tinjau firewall cloud secara terpisah dan pertahankan izin SSH.
Dari komputer lain, minta alamat server sebenarnya dengan header Host: linux-course.test dan pastikan halaman yang sama diterima. Jika memakai curl, gunakan opsi -H untuk header tersebut. Bila lokal berhasil tetapi akses luar gagal, periksa binding listener, penyaringan, rute, dan NAT. Sebaliknya, respons HTTP seperti 403, 404, atau 502 mengarahkan pemeriksaan ke server, jalur sumber daya, atau aplikasi.
Mengatur domain nyata dan HTTPS
- Arahkan record A domain nyata ke alamat IPv4 publik yang benar. Tambahkan AAAA hanya jika IPv6 pada server dan jalur aksesnya benar-benar dapat digunakan.
- Ganti server_name dengan domain itu, jalankan nginx -t, lalu reload setelah berhasil. Dari jaringan lain, uji respons HTTP menggunakan domain tersebut.
- Pilih sistem operasi dan metode pemasangan Nginx pada petunjuk resmi Certbot. Jika memakai paket Ubuntu, tinjau
sudo apt install certbot python3-certbot-nginxdan repositori yang diperlukan. Jangan mencampur beberapa metode pemasangan tanpa memeriksa instalasi yang sudah ada; distribusi lain memerlukan pemeriksaan repositorinya sendiri. - Cadangkan konfigurasi Nginx, pastikan kendali atas domain dan akses port yang diperlukan, lalu jalankan
sudo certbot --nginx -d ACTUAL_DOMAINsetelah mengganti ACTUAL_DOMAIN dengan domain nyata. Plugin nginx dapat mengubah konfigurasi untuk memasang sertifikat. - Periksa nama domain pada sertifikat, rantai kepercayaan, masa berlaku, dan pengalihan HTTP ke HTTPS. Uji pembaruan dengan
sudo certbot renew --dry-runserta pastikan penjadwalan pembaruan otomatis tersedia dan sesuai instalasi.
Jika server memiliki beberapa sertifikat, periksa nama sertifikat yang benar dan batasi pengujian dengan --cert-name bila hanya sertifikat latihan yang harus diuji. Dry-run menguji proses pembaruan; ini tidak menggantikan pemeriksaan HTTPS aktual dari klien.
Plugin nginx menggunakan validasi HTTP-01 melalui port 80; layanan HTTPS untuk pengunjung memerlukan akses 443. Jika validasi HTTP tidak dapat digunakan, pilih metode lain yang didukung, seperti DNS-01, sesuai panduan validasi dan pembaruan Certbot. Latihan lokal yang berhasil belum membuktikan kesiapan DNS publik atau HTTPS. Jangan mengirim kata sandi dan token pada tahap uji HTTP yang tidak terenkripsi.
Memeriksa gangguan dan membatalkan hanya konfigurasi latihan
systemctl status nginx --no-pager
journalctl -b -u nginx -n 50 --no-pager
sudo nginx -t
Periksa juga jalur error_log yang dikonfigurasi dan waktu permintaan. Untuk menghapus latihan, cadangkan lalu singkirkan hanya berkas conf yang dibuat untuk latihan; validasi, kemudian reload setelah berhasil. Bersihkan konten, sertifikat, DNS, dan aturan firewall hanya setelah memeriksa dependensinya. Pertahankan situs lain, sertifikat bersama, dan aturan pengelolaan yang masih diperlukan.




