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 ini, Anda akan mempelajari cara menginstal Nginx di AlmaLinux 8 dengan sertifikat TLS/SSL gratis dari Let's Encrypt.
Prasyarat
- OS yang Disarankan: AlmaLinux 8.
- Akun pengguna: Akun pengguna dengan hak istimewa sudo atau akses root (perintah su) .
Memperbarui Sistem Operasi
Perbarui AlmaLinux . Anda sistem operasi untuk memastikan semua paket yang ada mutakhir:
sudo dnf upgrade --refresh
Tutorial akan menggunakan perintah sudo dan dengan asumsi Anda memiliki status sudo .
Untuk memverifikasi status sudo di akun Anda:
sudo whoami
Contoh keluaran yang menunjukkan status sudo:
[joshua@localhost ~]$ sudo whoami
root
Untuk mengatur akun sudo yang ada atau baru, kunjungi tutorial kami di Cara Menambahkan Pengguna ke Sudoers di AlmaLinux .
Untuk menggunakan akun root , gunakan perintah berikut dengan kata sandi root untuk masuk.
su
Instal Nginx
Metode 1. Instal Nginx dari AlmaLinux AppStream
Metode pertama adalah menginstal Nginx dari aliran Aplikasi AlmaLinux. Versi ini lebih tua tetapi stabil dan aman. Jika Anda perlu menjalankan server web utama atau proxy terbalik, sering disarankan untuk menginstal repositori App Stream.
Untuk menginstal Nginx, jalankan perintah berikut.
sudo dnf 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.14.1
Catatan, output Anda akan berbeda tergantung pada modul yang Anda aktifkan.
Sebelum melanjutkan, Anda harus memulai layanan Nginx.
sudo systemctl start nginx
Selanjutnya, verifikasi status untuk memastikan tidak ada kesalahan.
systemctl status nginx
Contoh keluaran jika semuanya bekerja dengan benar:
Metode 2. Instal Nginx dari EPEL
Opsi kedua adalah menginstal Nginx dari repositori EPEL. Ini akan memberi Anda versi Nginx yang jauh lebih mutakhir yang masih dianggap stabil daripada menginstal versi terbaru dari Nginx itu sendiri. Prosesnya relatif mudah.
Pertama, instal repositori EPEL:
sudo dnf install epel-release
Contoh keluaran:
Ketik “Y”, lalu tekan “ENTER KEY” untuk melanjutkan penginstalan.
Sekarang, dengan EPEL terinstal, Anda perlu mengatur ulang modul Nginx.
sudo dnf module reset nginx
Selanjutnya, buat daftar modul yang tersedia dengan dnf dari semua repositori yang dikenal.
sudo dnf module list nginx
Contoh keluaran:
Seperti di atas, Anda dapat beralih ke versi stabil atau arus utama yang lebih tinggi. Perhatikan bahwa versi stabil selalu dalam nomor build, dan jalur utama secara alami adalah jalur utama.
Untuk mengaktifkan salah satu modul baru dari EPEL, gunakan yang berikut ini di terminal Anda.
Aktifkan kandang terbaru:
sudo dnf module enable nginx:1.20
Catatan untuk Nginx EPEL yang stabil: Ini dapat berubah di masa mendatang. Pastikan untuk membuat daftar modul dan tidak hanya menyalin dan menempel.
Aktifkan arus utama terbaru:
sudo dnf module enable nginx:mainline
Sekarang, instal Nginx:
sudo dnf 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 (Saluran Utama):
nginx version: nginx/1.19.10
Catatan, output Anda akan berbeda tergantung pada modul yang Anda aktifkan.
Sebelum melanjutkan, Anda harus memulai layanan Nginx.
sudo systemctl enable nginx --now
Selanjutnya, verifikasi status untuk memastikan tidak ada kesalahan.
systemctl status nginx
Contoh keluaran jika semuanya bekerja dengan benar:
Konfigurasikan Aturan Firewall
Itu tidak secara otomatis menambahkan aturan firewall ke port standar 80 atau 443 saat menginstal Nginx. Sebelum melanjutkan, Anda harus menetapkan aturan berikut, ini akan tergantung pada port apa yang akan Anda gunakan, tetapi semua opsi terdaftar.
Buka port 80 atau HTTP:
sudo firewall-cmd --permanent --zone=public --add-service=http
Buka port 443 atau HTTPS:
sudo firewall-cmd --permanent --zone=public --add-service=https
Muat ulang firewall untuk menerapkan perubahan
sudo firewall-cmd --reload
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 penyiapan. Cara termudah untuk melakukannya adalah dengan yang berikut ini.
curl -4 icanhazip.com
Contoh keluaran:
XXX.XXX.XXX.XXX IP address
Jika perintah tidak berfungsi, kemungkinan besar Anda tidak menginstal paket curl. Jalankan perintah berikut:
sudo dnf install curl -y
Setelah Anda memiliki alamat IP server, buka Browser Internet favorit Anda, dan periksa apakah halaman arahan default berfungsi.
http://your_server_ip
Anda harus mendapatkan halaman berikut di Browser Internet Anda. Jika Anda tidak mendapatkan halaman ini tetapi halaman kesalahan Nginx, tidak apa-apa karena rilis EPEL mungkin berbeda. Anda sedang menguji untuk memastikan Anda dapat mencapai server Nginx.
Menyiapkan Direktori Sumber Situs
Dalam tutorial, Anda akan menyiapkan domain bernama example.com , tetapi Anda harus menggantinya dengan nama domain Anda . Tutorial akan membuat direktori web dan mengonfigurasi file situs di direktori induk /var/www/ .
Pertama, buat direktori, untuk example.com , sebagai berikut, menggunakan “-p” tandai untuk membuat direktori induk yang diperlukan:
sudo mkdir -p /var/www/your_domain/html
Kedua, Anda perlu menetapkan pemilik direktori.
sudo chown -R $USER:$USER /var/www/your_domain/html
Ketiga, tetapkan izin direktori, sehingga pemilik membaca, menulis, dan mengeksekusi file sementara hanya memberikan izin membaca dan mengeksekusi ke grup dan lainnya. Anda dapat memasukkan perintah berikut:
sudo chmod -R 755 /var/www/your_domain
Atau, Anda dapat menggunakan /usr/share/nginx/html sebagai gantinya, tetapi /var/www metode direktori direkomendasikan untuk pengguna baru.
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
Secara default, blok server Nginx, mirip dengan host virtual Apache, ditangani di /etc/nginx/conf.d direktori. Namun, penginstalan Nginx bervariasi dari berbagai versi dan distribusi yang memanfaatkan conf.d atau sites-available/sites-enabled secara default. Untuk tutorial, direktori situs akan digunakan untuk menjaga standar.
Pertama, buat direktori yang diperlukan untuk situs-tersedia dan berfungsi dengan situs . Pengguna Nginx juga akan terbiasa dengan pengaturan ini.
sudo mkdir /etc/nginx/sites-available
sudo mkdir /etc/nginx/sites-enabled
Selanjutnya, buka file nginx.conf Anda dan hapus atau komentari “include /etc/nginx/default.d/*.conf;” dan langsung di bawahnya tambahkan include “/etc/nginx/sites-enabled/*.conf;” .
Hanya contoh:
# For more information on configuration, see:
# * Official English Documentation: http://nginx.org/en/docs/
# * Official Russian Documentation: http://nginx.org/ru/docs/
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;
# Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;
events {
worker_connections 1024;
}
http {
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 4096;
include /etc/nginx/mime.types;
default_type application/octet-stream;
###EDIT HERE###
# include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*.conf;
}
Seperti di atas, “#” komentar telah ditambahkan ke include conf.d baris, dan sertakan yang mendukung situs telah ditambahkan.
Simpan file (CTRL+O) dan keluar dari (CTRL+X) .
Selanjutnya, buat file konfigurasi blok server Anda. Nama your_domain.conf akan digunakan untuk tutorial ini, tetapi ini dapat diberi nama apa pun yang Anda inginkan.
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;
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.
Mengaktifkan Blok Server Nginx
Anda harus menautkan file konfigurasi dari situs yang tersedia ke situs yang diaktifkan di direktori Nginx Anda untuk mengaktifkan blok server Nginx. 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 EPEL repositori dan mod_ssl paket untuk paket dan keamanan yang lebih baik.
sudo dnf install epel-release mod_ssl -y
Selanjutnya, instal paket certbot sebagai berikut:
sudo dnf 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 .
Secara opsional, Anda dapat mengatur tugas cron untuk memperbarui sertifikat secara otomatis. Certbot menawarkan skrip yang melakukan ini secara otomatis, dan Anda dapat menguji terlebih dahulu untuk memastikan semuanya berfungsi dengan menjalankan dry run.
sudo certbot renew --dry-run
Jika semuanya berfungsi, buka jendela crontab Anda dengan menggunakan perintah terminal berikut.
sudo crontab -e
Selanjutnya, tentukan waktu kapan harus diperpanjang secara otomatis. Ini harus diperiksa minimal setiap hari, dan jika sertifikat perlu diperbarui, skrip tidak akan memperbarui sertifikat. Jika Anda memerlukan bantuan untuk menemukan waktu yang tepat untuk menyetel, gunakan alat gratis crontab.guru.
00 00 */1 * * /usr/sbin/certbot-auto renew
Simpan (CTRL+O) lalu keluar dari (CTRL+X), dan cronjob akan diaktifkan secara otomatis.
Mengelola Layanan Nginx
Sekarang setelah Anda berhasil menjalankan Nginx di server Anda, beberapa keynote manajemen adalah sebagai berikut.
Untuk menghentikan server web Nginx:
sudo systemctl stop nginx
Untuk memulai server web Nginx:
sudo systemctl start nginx
Untuk memulai ulang server web Nginx:
sudo systemctl restart nginx
Untuk memuat ulang server web Nginx (Untuk perubahan kecil lainnya tidak memerlukan restart) :
sudo systemctl reload nginx
Untuk menonaktifkan Nginx pada boot server:
sudo systemctl disable nginx
Untuk memulai Nginx di server boot (Diaktifkan secara otomatis saat instalasi) :
sudo systemctl enable nginx
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 flag .
sudo tail -f /var/log/nginx/access.log -n 30
Ini hanyalah beberapa contoh dari membaca log, dan grep juga dapat membantu.
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 dnf upgrade --refresh
Jika upgrade tersedia, jalankan 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.
Cara Menghapus (Mencopot) Nginx
Untuk menghapus Nginx jika sudah tidak digunakan lagi, dapat dilakukan dengan perintah berikut:
sudo dnf autoremove nginx
Perintah ini juga akan menghapus semua dependensi yang tidak digunakan yang menyertai penginstalan.
Ingat, jika Anda menginstal Nginx menggunakan EPEL dan ingin meresetnya untuk menginstal ulang versi aslinya, gunakan perintah berikut seperti yang dinyatakan sebelumnya.
sudo dnf modules reset nginx