GNU/Linux >> Belajar Linux >  >> Ubuntu

Cara Menginstal Nginx dengan Let's Encrypt TLS/SSL di Ubuntu 20.04

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.


Ubuntu
  1. Cara Menginstal Nextcloud dengan Nginx dan Lets Encrypt SSL di Ubuntu 20.04 LTS

  2. Cara Menginstal Magento 2 dengan Nginx dan Mengenkripsi SSL di Ubuntu 20.04 LTS

  3. Cara Menginstal Let's Encrypt SSL di Ubuntu 18.04 dengan Nginx

  1. Cara Menginstal MediaWiki dengan Nginx di Ubuntu 16.04

  2. Cara Menginstal Magento dengan Nginx di Ubuntu 15.10

  3. Cara Menginstal Drupal 8 dengan Nginx, PHP-FPM dan SSL di Ubuntu 15.10

  1. Cara Menginstal Mailpile dengan Nginx di Ubuntu 15.10

  2. Cara Menginstal Moodle dengan Nginx dan Mengenkripsi SSL di Ubuntu 20.04

  3. Cara Memasang Let's Encrypt SSL di Nginx di Debian 11