Cara menginstal nginx dengan host virtual dan sertifikat SSL

Cara menginstal nginx dengan host virtual dan sertifikat SSL

Nginx (kependekan dari Engine-x) adalah http yang gratis, open source, kuat, berkinerja tinggi dan terukur dan server proxy terbalik, surat dan server proxy TCP/UDP standar. Mudah digunakan dan dikonfigurasi, dengan bahasa konfigurasi yang sederhana. Nginx sekarang menjadi perangkat lunak server web yang disukai untuk memberi daya pada situs yang sangat dimuat, karena skalabilitas dan kinerjanya.

Dalam artikel ini akan membahas cara menggunakan NginX sebagai server HTTP, mengkonfigurasinya untuk melayani konten web, dan mengatur host virtual berbasis nama, dan membuat dan menginstal SSL untuk transmisi data yang aman, termasuk sertifikat yang ditandatangani sendiri di Ubuntu dan Centos.

Cara menginstal server web nginx

Mulailah pertama dengan menginstal paket Nginx dari repositori resmi menggunakan paket paket Anda seperti yang ditunjukkan.

------------ Di Ubuntu ------------ $ sudo apt update $ sudo apt install nginx ------------ Di Centos ------------ $ sudo yum update $ sudo yum instal epel-rilis $ sudo yum install nginx 

Setelah paket nginx diinstal, Anda harus memulai layanan untuk saat ini, aktifkan untuk memulai secara otomatis pada waktu boot dan lihat statusnya, menggunakan perintah berikut. Perhatikan itu di Ubuntu, itu harus dimulai dan diaktifkan secara otomatis saat paket telah dikonfigurasi sebelumnya.

$ sudo systemctl start nginx $ sudo systemctl Aktifkan nginx $ sudo systemctl status nginx 
Mulai dan periksa status nginx

Pada titik ini, server web nginx harus berjalan dan berjalan, Anda dapat memverifikasi status dengan perintah netstat.

$ sudo netstat -tlpn | grep nginx 
Periksa status port nginx

Jika sistem Anda mengaktifkan firewall, Anda perlu membuka port 80 Dan 443 untuk memungkinkan Http Dan Https lalu lintas masing -masing, melalui itu, dengan berlari.

------------ Di Centos ------------ $ sudo firewall-cmd --permanent --add-port = 80/tcp $ sudo firewall-cmd --permanent --add-port = 443/tcp $ sudo firewall-cmd --road ------------ Di Ubuntu ------------ $ sudo ufw izinkan 80/tcp $ sudo ufw izinkan 443/tcp $ sudo ufw reload 

Metode yang ideal untuk menguji instalasi nginx dan memeriksa apakah itu berjalan dan dapat melayani halaman web adalah dengan membuka browser web dan menunjuk ke IP server.

http: // Anda-IP-Address atau http: // Anda-domain Anda.com 

Instalasi yang berfungsi harus ditunjukkan oleh layar berikut.

Periksa halaman web nginx

Cara mengkonfigurasi server web nginx

File konfigurasi Nginx terletak di direktori /etc/nginx dan file konfigurasi global terletak di /etc/nginx/nginx.conf di kedua centos dan ubuntu.

Nginx terdiri dari modul yang dikendalikan oleh berbagai opsi konfigurasi, yang dikenal sebagai arahan. A pengarahan bisa menjadi sederhana (dalam bentuk nama dan nilai yang diakhiri dengan a ;) atau memblokir (memiliki instruksi tambahan yang terlampir ). Dan arahan blok yang berisi arahan lain disebut a konteks.

Semua arahan dijelaskan secara komprehensif dalam dokumentasi Nginx di situs web proyek. Anda dapat merujuknya untuk informasi lebih lanjut.

Cara Melayani Konten Statis Menggunakan Nginx Dalam Mode Standalone

Pada tingkat dasar, Nginx dapat digunakan untuk melayani konten statis seperti HTML dan file media, dalam mode mandiri, di mana hanya blok server default yang digunakan (analog dengan apache di mana tidak ada host virtual yang dikonfigurasi).

Kami akan mulai dengan menjelaskan secara singkat struktur konfigurasi di file konfigurasi utama.

 $ sudo vim/etc/nginx/nginx.conf 

Jika Anda melihat ke file konfigurasi nginx ini, struktur konfigurasi akan muncul sebagai berikut dan ini disebut sebagai konteks utama, yang berisi banyak arahan sederhana dan blokir lainnya. Semua lalu lintas web ditangani dalam konteks HTTP.

pengguna nginx; worker_processes 1; ... error_log/var/log/nginx/error.log memperingatkan; pid/var/run/nginx.pid;… event ... http server .. . … 

Berikut ini adalah sampel konfigurasi utama Nginx (/etc/nginx/nginx.conf) File, di mana blok http di atas berisi arahan incerting yang memberi tahu nginx di mana menemukan file konfigurasi situs web (konfigurasi host virtual).

File Konfigurasi Nginx
Pengguna www-data; worker_processes otomatis; pid /run /nginx.pid; Acara Worker_Connections 768; # multi_accept on;  http include/etc/nginx/mime.jenis; Aplikasi Default_Type/Octet-Stream; termasuk/etc/nginx/mime.jenis; Aplikasi Default_Type/Octet-Stream; access_log/var/log/nginx/access.catatan; error_log/var/log/nginx/error.catatan; SendFile On; #tcp_nopush on; Keepalive_Timeout 65; #gzip on; termasuk/etc/nginx/conf.D/*.conf;  

Perhatikan itu di Ubuntu, Anda juga akan menemukan tambahan termasuk arahan (Sertakan/etc/nginx/Situs-Enabled/*;), di mana direktori /etc/nginx/Situs-mendukung/ Menyimpan symlink ke file konfigurasi situs web yang dibuat di /etc/nginx/situs-tersedia/, untuk mengaktifkan situs. Dan menghapus symlink menonaktifkan situs tertentu.

Berdasarkan sumber instalasi Anda, Anda akan menemukan file konfigurasi situs web default di /etc/nginx/conf.D/Default.conf (Jika Anda menginstal dari resmi Nginx repositori dan Epel) atau /etc/nginx/Situs-mendukung/default (Jika Anda menginstal dari repositori Ubuntu).

Ini adalah sampel blok server nginx default kami yang terletak di /etc/nginx/conf.D/Default.conf pada sistem pengujian.

server listen 80 default_server; Dengarkan [::]: 80 default_server; nama server _; root/var/www/html/; Indeks Indeks.html; Lokasi / TRY_FILES $ URI $ URI / = 404;  

Penjelasan singkat tentang arahan dalam konfigurasi di atas:

  • mendengarkan: Menentukan pelabuhan server mendengarkan.
  • nama server: Menentukan nama server yang dapat menjadi nama yang tepat, nama wildcard, atau ekspresi reguler.
  • akar: Menentukan direktori dari mana nginx akan melayani halaman web dan dokumen lainnya.
  • indeks: Menentukan jenis file indeks yang akan dilayani.
  • Lokasi: Digunakan untuk memproses permintaan file dan folder tertentu.

Dari browser web, saat Anda menunjuk ke server menggunakan nama host localhost atau alamat IP -nya, ia memproses permintaan dan melayani file /var/www/html/index.html, dan segera menyimpan acara ke log aksesnya (/var/log/nginx/akses.catatan) dengan 200 (OK) Respons. Dalam hal kesalahan (peristiwa gagal), ia mencatat pesan di log kesalahan (/var/log/nginx/error.catatan).

Situs Default Uji Nginx

Untuk mempelajari lebih lanjut tentang masuk Nginx, Anda dapat merujuk pada cara mengkonfigurasi akses kustom atau format log kesalahan di nginx.

Alih-alih menggunakan file log default, Anda dapat mendefinisikan file log khusus untuk situs web yang berbeda, seperti yang akan kita lihat nanti, di bawah bagian "Menyiapkan host virtual berbasis nama (blok server)".

Cara membatasi akses ke halaman web dengan nginx

Untuk membatasi akses ke situs web/aplikasi Anda atau beberapa bagiannya, Anda dapat mengatur otentikasi HTTP dasar. Ini pada dasarnya dapat digunakan untuk membatasi akses ke seluruh server HTTP, blok server individual atau blok lokasi.

Mulailah dengan membuat file yang akan menyimpan kredensial akses Anda (Nama pengguna/kata sandi) dengan menggunakan htpasswd kegunaan.

 $ yum menginstal httpd-tools #rhel/centos $ sudo apt install apache2-utils #debian/ubuntu 

Sebagai contoh, mari tambahkan admin pengguna ke daftar ini (Anda dapat menambahkan sebanyak mungkin pengguna), di mana -C Opsi digunakan untuk menentukan file kata sandi, dan -B untuk mengenkripsi kata sandi. Setelah Anda memukul [Memasuki], Anda akan diminta untuk memasukkan kata sandi pengguna:

$ sudo htpasswd -bc/etc/nginx/conf.D/.HTPASSWD Admin 

Kemudian, mari kita tetapkan izin dan kepemilikan yang tepat untuk file kata sandi (ganti pengguna dan grup nginx www-data di ubuntu).

$ sudo chmod 640/etc/nginx/conf.D/.htpasswd $ sudo chown nginx: nginx/etc/nginx/conf.D/.htpasswd 

Seperti yang kami sebutkan sebelumnya, Anda dapat membatasi akses ke server web Anda, satu situs web (menggunakan blok servernya) atau direktori atau file tertentu. Dua arahan yang bermanfaat dapat digunakan untuk mencapai ini:

  • AUTH_BASIC - menyalakan validasi nama pengguna dan kata sandi menggunakan “Otentikasi Dasar HTTPProtokol.
  • AUTH_BASIC_USER_FILE - Menentukan file kredensial.

Sebagai contoh, kami akan menunjukkan cara melindungi kata sandi direktori /var/www/html/dilindungi.

server listen 80 default_server; server_name localhost; root/var/www/html/; Indeks Indeks.html; Lokasi / TRY_FILES $ URI $ URI / = 404;  Lokasi / Lindung / auth_basic "Akses terbatas!"; auth_basic_user_file/etc/nginx/conf.D/.htpasswd;  

Sekarang, simpan perubahan dan restart layanan nginx.

$ sudo systemctl restart nginx 

Lain kali Anda mengarahkan browser ke direktori di atas (http: // localhost/dilindungi) Anda akan diminta untuk memasukkan kredensial login Anda (nama pengguna admin dan kata sandi yang dipilih).

Login yang berhasil memungkinkan Anda untuk mengakses konten direktori, jika tidak, Anda akan mendapatkan A “401 otorisasi diperlukan"Kesalahan.

Cara mengatur host virtual berbasis nama (blok server) di nginx

Konteks server memungkinkan beberapa domain/situs disimpan dan disajikan dari mesin fisik yang sama atau virtual private server (VPS). Beberapa blok server (mewakili host virtual) dapat dideklarasikan dalam konteks HTTP untuk setiap situs/domain. Nginx memutuskan server mana yang memproses permintaan berdasarkan header permintaan yang diterimanya.

Kami akan menunjukkan konsep ini menggunakan domain dummy berikut, masing -masing terletak di direktori yang ditentukan:

  • Wearetecmint.com - /var/www/html/wearetecmint.com/
  • welovelinux.com - /var/www/html/welovelinux.com/

Selanjutnya, tetapkan izin yang sesuai di direktori untuk setiap situs.

$ sudo chmod -r 755/var/www/html/wearetecmint.com/public_html $ sudo chmod -r 755/var/www/html/welovelinux.com/public_html 

Sekarang, buat sampel indeks.html file di dalam masing -masing public_html direktori.

  www.Wearetecmint.com   

Ini adalah halaman indeks www.Wearetecmint.com

Selanjutnya, buat file konfigurasi blok server untuk setiap situs di dalam /etc/httpd/conf.D direktori.

$ sudo vi/etc/nginx/conf.D/Wearetecmint.com.conf $ sudo vi/etc/nginx/conf.D/Welovelinux.com.conf 

Tambahkan deklarasi blok server berikut di Wearetecmint.com.conf mengajukan.

Wearetecmint.com.conf
server dengarkan 80; server_name wearetecmint.com; root/var/www/html/wearetecmint.com/public_html; Indeks Indeks.html; Lokasi / TRY_FILES $ URI $ URI / = 404;  

Selanjutnya, tambahkan deklarasi blok server berikut di welovelinux.com.conf mengajukan.

welovelinux.com.conf
server dengarkan 80; server_name welovelinux.com; root/var/www/html/welovelinux.com/public_html; Indeks Indeks.html; Lokasi / TRY_FILES $ URI $ URI / = 404;  

Untuk menerapkan perubahan terbaru, restart server web nginx.

$ sudo systemctl restart nginx 

dan mengarahkan server web Anda ke alamat di atas harus membuat Anda melihat halaman utama domain dummy.

http: // wearetecmint.com http: // welovelinux.com 
Uji situs web host virtual nginx

Penting: Kalau sudah Selinux Diaktifkan, konfigurasinya yang default tidak memungkinkan Nginx untuk mengakses file di luar lokasi resmi yang terkenal (seperti /etc/nginx untuk konfigurasi, /var/log/nginx untuk log, /var/www/html untuk file web dll…).

Anda dapat menangani ini dengan menonaktifkan Selinux, atau mengatur konteks keamanan yang benar. Untuk informasi lebih lanjut, lihat panduan ini: Menggunakan Nginx dan Nginx Plus dengan Selinux di situs web Nginx Plus.

Cara Menginstal dan Mengkonfigurasi SSL Dengan Nginx

SSL Sertifikat membantu mengaktifkan http aman (Https) di situs Anda, yang penting untuk membangun koneksi tepercaya/aman antara pengguna akhir dan server Anda dengan mengenkripsi informasi yang ditransmisikan ke, dari, atau di dalam situs Anda.

Kami akan membahas cara membuat dan menginstal sertifikat yang ditandatangani sendiri, dan menghasilkan permintaan penandatanganan sertifikat (CSR) untuk memperoleh sertifikat SSL dari otoritas sertifikat (Ca), untuk digunakan dengan nginx.

Sertifikat yang ditandatangani sendiri bebas untuk dibuat dan praktis baik untuk tujuan pengujian dan untuk layanan internal-LAN. Untuk server yang menghadap publik, sangat disarankan untuk menggunakan sertifikat yang dikeluarkan oleh CA (misalnya ayat mari) untuk menegakkan keasliannya.

Untuk membuat sertifikat yang ditandatangani sendiri, pertama-tama buat direktori di mana sertifikat Anda akan disimpan.

$ sudo mkdir/etc/nginx/ssl-certs/ 

Kemudian buat sertifikat yang ditandatangani sendiri dan kunci menggunakan openssl Alat baris perintah.

$ sudo openssl req -x509 -nodes -days 365 -newkey RSA: 2048 -Keyout/etc/nginx/ssl -certs/nginx.kunci -out/etc/nginx/ssl -certs/nginx.crt 

Mari kita jelaskan secara singkat opsi yang digunakan dalam perintah di atas:

  • Req -x509 - menunjukkan kami membuat sertifikat x509.
  • -node (tidak ada des) - berarti "jangan mengenkripsi kunci".
  • -Hari 365 - Menentukan jumlah hari sertifikat akan berlaku untuk.
  • -Newkey RSA: 2048 - Menentukan bahwa kunci yang dihasilkan menggunakan algoritma RSA harus 2048-bit.
  • -Keyout/etc/nginx/ssl-certs/nginx.kunci - Menentukan jalur lengkap kunci RSA.
  • -out/etc/nginx/ssl-certs/nginx.crt - Menentukan jalur lengkap sertifikat.
Buat sertifikat dan kunci SSL untuk nginx

Selanjutnya, buka file konfigurasi host virtual Anda dan tambahkan baris berikut ke Deklarasi Blok Server Mendengarkan di port 443. Kami akan menguji dengan file host virtual /etc/nginx/conf.D/Wearetecmint.com.conf.

$ sudo vi/etc/nginx/conf.D/Wearetecmint.com.conf 

Kemudian tambahkan arahan SSL ke file konfigurasi nginx, itu akan terlihat mirip dengan di bawah ini.

server dengarkan 80; Dengarkan [::]: 80; Dengarkan 443 SSL; Dengarkan [::]: 443 SSL; SSL di; ssl_certificate/etc/nginx/ssl-certs/nginx.CRT; ssl_trusted_certificate/etc/nginx/ssl-certs/nginx.CRT; ssl_certificate_key/etc/nginx/ssl-certs/nginx.kunci; server_name wearetecmint.com; root/var/www/html/wearetecmint.com/public_html; Indeks Indeks.html; Lokasi / TRY_FILES $ URI $ URI / = 404;  

Sekarang restart nginx dan arahkan browser Anda ke alamat berikut.

https: // www.Wearetecmint.com 
Periksa situs web Nginx SSL

Jika Anda ingin membeli sertifikat SSL dari CA, Anda perlu menghasilkan permintaan penandatanganan sertifikat (CSR) seperti yang ditunjukkan.

$ sudo openssl req -newkey rsa: 2048 -nodes -keyout/etc/nginx/ssl -certs/contoh.com.kunci -out/etc/nginx/ssl -certs/contoh.com.CSR 

Anda juga dapat membuat CSR dari kunci pribadi yang ada.

$ sudo openssl req -key/etc/nginx/ssl -certs/contoh.com.kunci -new -out/etc/nginx/ssl -certs/contoh.com.CSR 

Kemudian, Anda perlu mengirim CSR yang dihasilkan ke a Ca untuk meminta penerbitan sertifikat SSL yang ditandatangani CA. Setelah Anda menerima sertifikat dari CA, Anda dapat mengonfigurasinya seperti yang ditunjukkan di atas.

Baca juga: Panduan utama untuk mengamankan, mengeras, dan meningkatkan kinerja Nginx Web Server

Ringkasan

Dalam artikel ini, kami telah menjelaskan cara menginstal dan mengkonfigurasi Nginx; Tercakup Cara Mengatur Hosting Virtual Berbasis Nama Dengan SSL Untuk Mengamankan Transmisi Data antara Server Web dan Klien.

Jika Anda mengalami kemunduran selama proses instalasi/konfigurasi nginx Anda atau memiliki pertanyaan atau komentar, gunakan formulir umpan balik di bawah ini untuk menghubungi kami.