GNU/Linux >> Belajar Linux >  >> Debian

Cara Menginstal Nginx dengan Let's Encrypt TLS/SSL di Debian 11 Bullseye

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 mempelajari cara menginstal Nginx di Debian 11 Bullseye menggunakan repositori default Debian atau repositori alternatif oleh Ondřej Surý dengan sertifikat TLS/SSL gratis dari Let's Encrypt.

Prasyarat

  • OS yang Disarankan: Debian 11 Bullseye
  • Akun pengguna: Akun pengguna dengan hak istimewa sudo atau akses root (perintah su) .

Memperbarui Sistem Operasi

Perbarui Debian 11 Bullseye . Anda sistem operasi untuk memastikan semua paket yang ada mutakhir:

sudo apt update && sudo apt upgrade

Akses Root atau Sudo

Secara default, ketika Anda membuat akun Anda saat memulai dengan Debian dibandingkan dengan distribusi lain, itu tidak secara otomatis menerima status sudoers. Anda harus memiliki akses ke sandi root untuk menggunakan perintah su atau kunjungi tutorial kami tentang Cara Menambahkan Pengguna ke Sudoers di Debian.

Instal Nginx

Metode 1. Instal Nginx Stable dari Debian Repository

Metode pertama adalah menginstal Nginx dari repositori default Debian, dan versi ini terbukti stabil dan aman. Jika Anda perlu menjalankan server web utama atau proxy terbalik, sering disarankan untuk menginstal paket repositori Debian.

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 Repositori Ondřej Surý

Atau, alih-alih menginstal build stabil Nginx default dari repositori Debian 11, Anda dapat menginstal Nginx Stable atau Mainline menggunakan repositori dari Ondřej Surý, pengelola PHP untuk Debian.

Untuk mengimpor repositori arus utama:

curl -sSL https://packages.sury.org/nginx-mainline/README.txt | sudo bash -x

Untuk mengimpor repositori yang stabil:

curl -sSL https://packages.sury.org/nginx/README.txt | sudo bash -x

Perbarui repositori Anda untuk mencerminkan perubahan baru:

sudo apt update

Sekarang Anda telah menginstal repositori Nginx 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 dan menyelesaikan penginstalan.

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. 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
systemctl status nginx

Contoh keluaran:

Opsional. Konfigurasi UFW

Secara default, UFW tidak diinstal pada Debian 11 Bullseye, tidak seperti distro lain seperti Ubuntu. Namun, jika Anda menggunakan UFW atau ingin tampilan yang lebih jelas dalam menjalankan firewall, gunakan informasi di bawah ini untuk mengonfigurasi UFW untuk Nginx.

Untuk menginstal UFW, gunakan 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 besar aplikasi lain juga akan muncul):

 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

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 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

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.

Mengaktifkan 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 flag .

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.


Debian
  1. Instal Lets Encrypt dan Secure Nginx dengan SSL/TLS di Debian 9

  2. Cara Menginstal Drupal 9 dengan Nginx dan Mengenkripsi SSL di Debian 10

  3. Cara Menginstal Let's Encrypt SSL dengan Apache di Debian 11

  1. Cara Menginstal DokuWiki dengan Lets Encrypt SSL di Debian 11

  2. Cara Menginstal AbanteCart dengan Nginx dan SSL di Debian 11

  3. Cara Instal Etherpad dengan Nginx dan SSL di Debian 11

  1. Cara Menginstal Wekan Kanban dengan Nginx dan Mengenkripsi SSL di Debian 10

  2. Cara Instal Drupal dengan Nginx dan Mari Enkripsi SSL di Debian 11

  3. Cara Instal Joomla dengan Nginx dan Mari Enkripsi SSL di Debian 11