Cara mengatur server web nginx di ubuntu 18.04 Bionic Beaver Linux

Cara mengatur server web nginx di ubuntu 18.04 Bionic Beaver Linux

Objektif

Pelajari cara menginstal dan mengkonfigurasi server web nginx di ubuntu 18.04 Bionic Beaver

Persyaratan

  • Izin root

Konvensi

  • # - mensyaratkan perintah linux yang diberikan untuk dieksekusi dengan hak istimewa root
    langsung sebagai pengguna root atau dengan menggunakan sudo memerintah
  • $ - mensyaratkan perintah Linux yang diberikan untuk dieksekusi sebagai pengguna biasa

Versi lain dari tutorial ini

Ubuntu 20.04 (fossa fokus)

Perkenalan

Server web nginx, bersama dengan Apache, adalah salah satu server web yang paling dikenal dan digunakan di dunia. Umumnya kurang haus sumber daya daripada Apache, dan dapat juga digunakan sebagai proxy terbalik.

Dalam tutorial ini kita akan melihat cara menginstal dan mengkonfigurasi server web nginx di ubuntu 18.04 Bionic Beaver.

Langkah 1 - Instalasi

Menginstal Nginx di Ubuntu 18.04 sangat mudah, kita hanya perlu menggunakan apt-get:

$ sudo apt-get update && sudo apt-get install nginx

Perintah pertama menyinkronkan mesin kami dengan repositori ubuntu, sedangkan yang kedua benar -benar menginstal paket nginx. Beberapa detik dan server akan diinstal pada sistem kami. Skrip instalasi juga akan mengurus memulai layanan nginx.

Kami dapat dengan mudah memverifikasi bahwa layanan berjalan menggunakan perintah Linux berikut:

$ sudo systemctl adalah nginx aktif

Perintah di atas akan kembali aktif Jika layanan sudah habis: memang, jika kita mengarahkan browser ke alamat server, atau ke localhost Jika kita beroperasi dari mesin itu sendiri, kita harus memvisualisasikan halaman selamat datang Nginx:

Halaman selamat datang nginx

Langkah 2 - Pengaturan Firewall

Untuk membuat server kami dapat melayani halaman ke mesin lain, kami harus mengatur firewall untuk memungkinkan lalu lintas yang masuk melalui port 80 (default), dan port 443 Jika kami ingin menggunakan https protokol. Perintah yang tepat untuk dijalankan untuk mencapai itu, tergantung pada manajer firewall yang digunakan pada mesin, tetapi di sini saya akan menganggap UFW sedang berjalan, karena itu adalah default di ubuntu.

Pertama, kami memverifikasi bahwa firewall aktif:

Status $ Sudo UFW

Jika tidak, Anda dapat mengaktifkannya dengan mengeksekusi perintah Linux berikut:

$ sudo ufw aktifkan

Namun berhati -hatilah saat, karena karena sistem akan memberi tahu Anda, mengaktifkan firewall dapat menghancurkan koneksi yang ada saat ini. Untuk memungkinkan koneksi yang masuk melalui port 80, kita harus menjalankan:

$ sudo ufw memungkinkan 80/tcp

Untuk mengizinkan Port 443, sebagai gantinya:

$ sudo ufw memungkinkan 443/tcp

Akhirnya, untuk memvisualisasikan status firewall saat ini, kita dapat menjalankan:

$ sudo status status UFW Status: aktif untuk bertindak dari------- ---- [1] 443/TCP memungkinkan di mana saja [2] 80/TCP memungkinkan di mana saja [3] 443/TCP (v6) Izinkan di mana saja (v6) [4] 80/tcp (v6) Izinkan di mana saja (v6) 

Seperti yang Anda lihat, perintah di atas akan memberi kami gambaran tentang aturan yang dikonfigurasi, diindeks dengan nomor.

Blok server Nginx (host virtual)

Blok server nginx, setara dengan Apache VirtualHosts, dan digunakan untuk menjalankan lebih dari satu situs pada mesin server yang sama. Pada pemasangan standar Nginx, kami dapat menemukan default blok server adalah /etc/nginx/situs-tersedia/default. Mari kita lihat:

# Konfigurasi server default # server listen 80 default_server; Dengarkan [::]: 80 default_server; [… .] root/var/www/html; # Tambahkan indeks.PHP ke daftar jika Anda menggunakan indeks indeks PHP.Indeks HTML.indeks htm.Nginx-debian.html; nama server _; Lokasi /  # Upaya Pertama untuk Melayani Permintaan sebagai File, lalu # sebagai direktori, lalu kembali ke menampilkan 404. TRY_FILES $ URI $ URI/ = 404;  [… .] 
Menyalin

Yang di atas adalah versi ramping (saya baru saja menghapus komentar) dari blok server Nginx default pada Ubuntu 18.04. Seperti yang Anda lihat, setiap arahan berakhir dengan titik koma. Hal pertama yang kita lihat di dalam Server Bagian, pada baris 4-5, adalah mendengarkan arahan. Yang pertama adalah untuk IPv4 Sedangkan yang kedua untuk IPv6. Sebenarnya ini bisa dipersingkat sebagai Dengarkan [::]: 80 ipv6only = off.

Itu default_server Petunjuk menetapkan blok server ini sebagai yang default, artinya itu akan digunakan jika tidak ada konfigurasi lain yang cocok dengan nama yang diminta. Petunjuk ini hanya dapat digunakan pada satu blok server sekaligus.

Itu akar Petunjuk pada baris 8 menetapkan jalur ke direktori root untuk situs yang akan dilayani oleh blok: pada dasarnya setara dengan Apache Root document.

Itu indeks Petunjuk pada baris 11 mendefinisikan file yang dapat digunakan sebagai indeks. File akan diperiksa secara berurutan.

Pada baris 13, nama server Petunjuk digunakan untuk menentukan nama server yang akan ditetapkan ke konfigurasi, dan menentukan blok server yang akan menangani permintaan. Saat mendefinisikan nama server, dimungkinkan untuk menggunakan wildcard dan ekspresi reguler. Dalam hal ini, nilai yang diberikan adalah _: Ini digunakan karena nilai yang tidak valid, dan tidak akan pernah cocok dengan nama host nyata (ingat bahwa konfigurasi ini adalah catch-all).

Akhirnya, kami memiliki Lokasi Petunjuk pada baris 15: itu mengubah cara permintaan ditangani di dalam blok server. Dalam hal ini, jalan yang harus dicocokkan untuk instruksi yang terjadi, adalah /. Bagian dari URI yang akan dicocokkan adalah yang setelah segmen host.

Di dalam lokasi "bait", di baris 18 kita dapat mengamati arahan lain, try_files: Ini memeriksa keberadaan file dalam urutan yang ditentukan, menggunakan yang pertama ditemukan untuk memenuhi permintaan. Dalam hal ini, seperti yang disarankan dari komentar di bagian ini, ia pertama kali mencoba mencocokkan file, daripada direktori. Jika tidak ada yang memenuhi permintaan, halaman 404 akan ditampilkan kepada pengguna. Perhatikan bahwa permintaan tersebut direpresentasikan sebagai $ URI variabel, dan apa yang mendefinisikannya sebagai direktori adalah slash trailing.



Mendefinisikan Blok Server Kustom

Kita sekarang harus membuat blok server khusus untuk melayani situs HTML. Sebagai hal pertama, kami akan membuat direktori yang akan berfungsi sebagai root dokumen untuk blok, sebut saja contohnya:

$ sudo mkdir/var/www/contoh

Kita juga perlu membuat indeks.Halaman HTML yang akan ditampilkan saat kami mencapai situs:

$ echo "Selamat datang untuk contoh!"| sudo tee/var/www/contoh/indeks.html> /dev /null

Setelah selesai, kami dapat membuat blok server di /etc/nginx/situs yang tersedia Direktori, untuk konsistensi, kami akan menamainya "contoh":

server dengarkan 80; root/var/www/contoh; Indeks Indeks.html; server_name www.contoh.lan;  
Menyalin

Untuk menguji bahwa konfigurasi kami benar dan tidak mengandung kesalahan sintaks, kami dapat menjalankan perintah Linux berikut:

$ sudo nginx -t

Sekarang, karena kami tidak memiliki server DNS di tempat, untuk mengirim permintaan ke server kami dengan nama yang ditentukan, kami harus menambahkan entri di /etc/host file mesin klien. Dalam hal ini alamat mesin yang saya gunakan sebagai server (dalam lingkungan host virtual) 192.168.122.89, Karena itu:

# File klien /etc /hosts [… .] 192.168.122.89 www.contoh.lan 
Menyalin

Sebelum kami mengaktifkan blok server baru kami, kami memiliki kesempatan untuk memverifikasi bahwa konfigurasi default memang berfungsi sebagai catchall default. Jika kita sekarang menavigasi ke “www.contoh.LAN ”dari mesin klien di mana kami baru saja menambahkan entri host, kami dapat melihat bahwa server akan menanggapi permintaan kami dengan halaman Nginx default (karena blok baru belum diaktifkan).

Untuk mengaktifkan blok server kami, kami harus membuat symlink dari konfigurasi yang kami tulis /etc/nginx/situs yang tersedia ke /etc/nginx/diaktifkan situs:

$ sudo ln -s/etc/nginx/situs-tersedia/contoh/etc/nginx/situs yang diaktifkan

Setelah itu, kita perlu memulai kembali Nginx:

$ sudo systemctl restart nginx

Pada titik ini, jika kita menavigasi ke “www.contoh.lan ”, kita harus melihat halaman kita yang tidak terlalu rumit:

Contoh halaman default

Menggunakan SSL

Untuk menggunakan SSL kami pada dasarnya memiliki dua opsi: memperoleh sertifikat dari otoritas sertifikat, atau menggunakan sertifikat yang ditandatangani sendiri. Dalam contoh pertama kami, kami akan menghasilkan sertifikat sendiri. Jalankan perintah Linux berikut untuk melanjutkan:

$ sudo openssl req -x509 \ -days 365 \ -sha256 \ -newkey rsa: 2048 \ -nodes \ -keyout/etc/ssl/private/example.kunci \ -out/etc/ssl/sertifikat/contoh -cert.PEM 
Menyalin

Dengan perintah ini kami menghasilkan sertifikat yang ditandatangani sendiri berlaku selama 365 hari, dan kunci RSA 2048 bit. Sertifikat dan kuncinya akan disimpan /etc/ssl/certs/example-cert.PEM Dan /etc/ssl/private/example.kunci file masing -masing. Jawab saja pertanyaan yang akan ditanyakan, memberikan perhatian khusus saat memasuki Fqdn: itu harus cocok dengan domain yang akan menggunakan sertifikat agar berfungsi dengan benar.

Anda akan diminta untuk memasukkan informasi yang akan dimasukkan ke dalam permintaan sertifikat Anda. Apa yang akan Anda masukkan adalah apa yang disebut nama terhormat atau DN. Ada beberapa bidang tetapi Anda dapat meninggalkan beberapa bidang untuk beberapa bidang akan ada nilai default, jika Anda masuk '.', Lapangan akan dibiarkan kosong. ----- Nama Negara (2 Kode Surat) [AU]: NAMA NEGARA ATAU PROVINSI IT (Nama Lengkap) [Some-State]: Nama Lokalitas (mis. Kota) []: Nama Organisasi Milan (mis. Perusahaan) [Internet Widgits Pty Ltd]] : Damage Inc. Nama Unit Organisasi (mis. Bagian) []: Nama Umum (E.G. server fqdn atau nama Anda) []: www.contoh.Alamat email LAN []: 

Sekarang kami memiliki sertifikat dan kunci kami, kami harus memodifikasi konfigurasi blok server kami, sehingga menjadi:

Server Listen 443 SSL; server_name www.contoh.lan; ssl_certificate/etc/ssl/cerc/example-cert.PEM; ssl_certificate_key/etc/ssl/private/example.kunci; root/var/www/contoh; Indeks Indeks.html;  
Menyalin

Seperti yang Anda lihat, kami memodifikasi mendengarkan Petunjuk di baris 2, menggunakan port 443 dan juga memungkinkan SSL Parameter, lalu kami menambahkan dua arahan baru, di baris 4-5: ssl_certificate Dan ssl_certificate_key, Poin mana yang masing -masing ke sertifikat dan lokasi kunci sertifikat.

Setelah memulai kembali layanan nginx, jika kita sekarang menavigasi https: // www.contoh.lan Kita harus melihat peringatan yang dikeluarkan oleh browser, karena fakta bahwa sertifikat ditandatangani sendiri. Namun demikian konfigurasi kami berfungsi dan kami menggunakan koneksi terenkripsi:

Peringatan Sertifikat Tidak Valid

Menggunakan ayat

Alternatif untuk sertifikat yang ditandatangani sendiri adalah sertifikat yang dikeluarkan oleh pihak ketiga yang diverifikasi. Meskipun kami dapat membeli sertifikat dari otoritas sertifikat, kami juga memiliki opsi untuk menggunakan “Mari Enkripsi!".

"Mari Enkripsi" itu sendiri merupakan otoritas sertifikat yang gratis dan terbuka yang memungkinkan kita secara otomatis mendapatkan sertifikat yang dipercaya oleh browser menggunakan PUNCAK Protokol dan agen manajemen sertifikat yang berjalan di server. Satu -satunya kondisi adalah mampu menunjukkan bahwa kami memiliki kendali atas domain yang ingin kami gunakan sertifikat.

Untuk menggunakan layanan ini, hal pertama yang harus dilakukan adalah menginstal certbot Klien ACME dan plugin Nginx khusus:

$ sudo apt-get update && apt-get install certbot python-certbot-nginx

Memperoleh sertifikat cukup sederhana:

$ sudo certbot ---nginx -m -d 

Jelas agar ini berfungsi, domain harus ditunjuk dengan benar ke IP server kami yang dapat diakses secara publik. Certbot akan meminta kami untuk menjawab beberapa pertanyaan untuk mengubah konfigurasi situs, dan jika semuanya berjalan dengan baik, sertifikat dan kunci akan disimpan ke dalam /etc/letsencrypt/live/ direktori. Certbot juga akan menerapkan perubahan yang diperlukan ke blok server dan memuat ulang layanan.

Kesimpulan

Kami menginstal server web nginx di ubuntu 18.04, melihat cara membuka port firewall yang diperlukan, memeriksa blok server Ubuntu default dan membuat konfigurasi khusus. Akhirnya, kami menghasilkan sertifikat yang ditandatangani sendiri dan menerapkan modifikasi yang diperlukan ke blok server untuk menggunakan protokol HTTPS.

Sebagai alternatif yang kami pertimbangkan menerapkan “ayo enkripsi!”, Yang dapat memberi kami sertifikat yang diakui tanpa biaya. Jangan ragu untuk mengajukan pertanyaan, dan mengunjungi dokumentasi NGINX resmi untuk informasi yang lebih rinci.

Tutorial Linux Terkait:

  • Hal -hal yang harus diinstal pada ubuntu 20.04
  • Hal -hal yang harus dilakukan setelah menginstal ubuntu 20.04 FOSSA FOSSA Linux
  • Ubuntu 20.04 trik dan hal -hal yang mungkin tidak Anda ketahui
  • Ubuntu 20.04 Panduan
  • Ubuntu 20.04 Hadoop
  • Pengantar Otomatisasi Linux, Alat dan Teknik
  • 8 Lingkungan Desktop Ubuntu Terbaik (20.04 FOSSA FOCAL…
  • Daftar dan Instalasi Klien FTP di Ubuntu 20.04 Linux…
  • Ubuntu 20.04: WordPress dengan instalasi nginx
  • Cara memigrasikan Apache ke nginx dengan mengonversi virtualhosts ke ..