aat menggunakan server web Nginx, blok server (mirip dengan host virtual di Apache) dapat digunakan untuk merangkum detail konfigurasi dan menghosting lebih dari satu domain pada satu server.
Dalam panduan ini, kita akan membahas cara mengonfigurasi blok server di Nginx pada server Ubuntu 16.04.
Terapkan aplikasi Anda dari GitHub menggunakan DigitalOcean App Platform . Biarkan DigitalOcean fokus pada penskalaan aplikasi Anda.
Prasyarat
Kami akan menggunakan pengguna non-root dengan sudohak istimewa di sepanjang tutorial ini. Jika Anda belum mengonfigurasi pengguna seperti ini, Anda dapat membuatnya dengan mengikuti panduan pengaturan server awal Ubuntu 16.04 kami .
Anda juga perlu memasang Nginx di server Anda. Panduan berikut membahas prosedur ini:
Cara Memasang Nginx di Ubuntu 16.04 : Gunakan panduan ini untuk menyiapkan Nginx sendiri.
Cara Menginstal Linux, Nginx, MySQL, PHP (tumpukan LEMP) di Ubuntu 16.04 : Gunakan panduan ini jika Anda akan menggunakan Nginx bersama dengan MySQL dan PHP.
Jika Anda telah memenuhi persyaratan ini, Anda dapat melanjutkan dengan panduan ini.
Contoh Konfigurasi
Untuk keperluan demonstrasi, kita akan menyiapkan dua domain dengan server Nginx kita. Nama domain yang akan kita gunakan dalam panduan ini adalah example.com dan test.com .
Catatan: untuk informasi lebih lanjut tentang menyiapkan domain dengan DigitalOcean, silakan lihat dokumentasi produk Domain dan DNS kami .
Jika Anda tidak memiliki dua nama domain cadangan untuk digunakan, gunakan nama pengganti untuk saat ini dan kami akan menunjukkan kepada Anda nanti cara mengonfigurasi komputer lokal untuk menguji konfigurasi Anda.
Langkah 1 — Menyiapkan Direktori Root Dokumen Baru
Secara default, Nginx pada Ubuntu 16.04 memiliki satu blok server yang diaktifkan. Blok ini dikonfigurasi untuk menyajikan dokumen dari direktori di /var/www/html.
Meskipun ini berfungsi dengan baik untuk satu situs, kita memerlukan direktori tambahan jika kita akan melayani beberapa situs. Kita dapat menganggap /var/www/htmldirektori tersebut sebagai direktori default yang akan dilayani jika permintaan klien tidak cocok dengan situs kita yang lain.
Kami akan membuat struktur direktori /var/wwwuntuk setiap situs kami. Konten web yang sebenarnya akan ditempatkan dalam htmldirektori di dalam direktori khusus situs ini. Ini memberi kami fleksibilitas tambahan untuk membuat direktori lain yang terkait dengan situs kami sebagai saudara dari htmldirektori tersebut jika perlu.
Kita perlu membuat direktori ini untuk setiap situs kita. -pBendera tersebut memberitahu mkdiruntuk membuat direktori induk yang diperlukan di sepanjang jalan:
sudo mkdir -p /var/www/example.com/html
sudo mkdir -p /var/www/test.com/html
Sekarang setelah kita memiliki direktori, kita akan menetapkan kembali kepemilikan direktori web ke akun pengguna normal kita. Ini akan memungkinkan kita menulis ke direktori tersebut tanpa sudo.
Catatan: Bergantung pada kebutuhan Anda, Anda mungkin perlu menyesuaikan izin atau kepemilikan folder lagi untuk mengizinkan akses tertentu bagi www-datapengguna. Misalnya, situs dinamis sering kali memerlukan ini. Persyaratan izin dan kepemilikan khusus sepenuhnya bergantung pada konfigurasi Anda. Ikuti rekomendasi untuk teknologi tertentu yang Anda gunakan.
Kita dapat menggunakan $USERvariabel lingkungan untuk menetapkan kepemilikan pada akun yang saat ini kita gunakan untuk masuk (pastikan Anda tidak masuk sebagai root ). Ini akan memudahkan kita untuk membuat atau mengedit konten dalam direktori ini:
sudo chown -R $USER:$USER /var/www/example.com/html
sudo chown -R $USER:$USER /var/www/test.com/html
Izin root web kita seharusnya sudah benar jika Anda belum mengubah umasknilainya, tetapi kita dapat memastikannya dengan mengetik:
sudo chmod -R 755 /var/www
Struktur direktori kita sekarang telah dikonfigurasikan dan kita dapat melanjutkan.
Langkah 2 — Membuat Halaman Contoh untuk Setiap Situs
Sekarang setelah kita menyiapkan struktur direktori, mari buat halaman default untuk setiap situs kita sehingga kita akan memiliki sesuatu untuk ditampilkan.
Buat index.htmlfile di domain pertama Anda:
nano /var/www/example.com/html/index.html
Di dalam berkas tersebut, kita akan membuat berkas dasar yang menunjukkan situs mana yang sedang kita akses. Tampilannya akan seperti ini:
/var/www/contoh.com/html/index.html
Welcome to Example.com!
Success! The example.com server block is working!
Simpan dan tutup berkas saat Anda selesai. Untuk melakukannya nano, tekan CTRL+ountuk menulis berkas, lalu CTRL+xuntuk keluar.
Karena berkas untuk situs kedua kita pada dasarnya akan sama, kita dapat menyalinnya ke akar dokumen kedua kita seperti ini:
cp /var/www/example.com/html/index.html /var/www/test.com/html/
Sekarang, kita dapat membuka file baru di editor kita:
nano /var/www/test.com/html/index.html
Ubahlah sehingga merujuk ke domain kedua kita:
/var/www/test.com/html/indeks.html
Welcome to Test.com!
Success! The test.com server block is working!
Simpan dan tutup berkas ini setelah selesai. Sekarang kita memiliki beberapa halaman untuk ditampilkan kepada pengunjung kedua domain kita.
Langkah 3 — Membuat File Blok Server untuk Setiap Domain
Sekarang setelah kita memiliki konten yang ingin disajikan, kita perlu membuat blok server yang akan memberi tahu Nginx cara melakukannya.
Secara default, Nginx berisi satu blok server yang disebut defaultyang dapat kita gunakan sebagai templat untuk konfigurasi kita sendiri. Kita akan mulai dengan mendesain blok server domain pertama kita, yang kemudian akan kita salin untuk domain kedua kita dan buat modifikasi yang diperlukan.
Membuat File Blok Server Pertama
Seperti disebutkan di atas, kita akan membuat file konfigurasi blok server pertama kita dengan menyalin file default:
sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/example.com
Sekarang, buka file baru yang Anda buat di editor teks Anda dengan sudohak istimewa:
sudo nano /etc/nginx/sites-available/example.com
Mengabaikan baris yang diberi komentar, berkasnya akan terlihat seperti ini:
/etc/nginx/situs-tersedia/contoh.com
server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/html;
index index.html index.htm index.nginx-debian.html;
server_name _;
location / {
try_files $uri $uri/ =404;
}
}
Pertama, kita perlu melihat perintah listen. Hanya satu blok server di server yang dapat default_servermengaktifkan opsi tersebut. Ini menentukan blok mana yang harus melayani permintaan jika yang server_namediminta tidak cocok dengan salah satu blok server yang tersedia. Ini seharusnya tidak sering terjadi dalam skenario dunia nyata karena pengunjung akan mengakses situs Anda melalui nama domain Anda.
Anda dapat memilih untuk menetapkan salah satu situs Anda sebagai "default" dengan menyertakan default_serveropsi tersebut dalam listenarahan, atau Anda dapat membiarkan blok server default diaktifkan, yang akan menyajikan konten direktori /var/www/htmljika host yang diminta tidak dapat ditemukan.
Dalam panduan ini, kami akan membiarkan blok server default tetap digunakan untuk melayani permintaan yang tidak cocok, jadi kami akan menghapus default_serverdari blok server ini dan berikutnya. Anda dapat memilih untuk menambahkan opsi ke blok server mana pun yang menurut Anda masuk akal.
/etc/nginx/situs-tersedia/contoh.com
server {
listen 80;
listen [::]:80;
. . .
}
Catatan: Anda dapat memeriksa apakah default_serveropsi tersebut hanya diaktifkan dalam satu file aktif dengan mengetik:
grep -R default_server /etc/nginx/sites-enabled/
Jika kecocokan ditemukan tanpa komentar di lebih dari satu file (ditampilkan di kolom paling kiri), Nginx akan mengeluh tentang konfigurasi yang tidak valid.
Hal berikutnya yang harus kita sesuaikan adalah root dokumen, yang ditentukan oleh rootperintah. Arahkan ke root dokumen situs yang Anda buat:
/etc/nginx/situs-tersedia/contoh.com
server {
listen 80;
listen [::]:80;
root /var/www/example.com/html;
}
Selanjutnya, kita perlu memodifikasi server_nameagar sesuai dengan permintaan untuk domain pertama kita. Kita juga dapat menambahkan alias apa pun yang ingin kita cocokkan. Kita akan menambahkan www.example.comalias untuk menunjukkannya.
Setelah selesai, berkas Anda akan terlihat seperti ini:
/etc/nginx/situs-tersedia/contoh.com
server {
listen 80;
listen [::]:80;
root /var/www/example.com/html;
index index.html index.htm index.nginx-debian.html;
server_name example.com www.example.com;
location / {
try_files $uri $uri/ =404;
}
}
Itu saja yang kita perlukan untuk konfigurasi dasar. Simpan dan tutup berkas untuk keluar.
Membuat File Blok Server Kedua
Sekarang setelah kita memiliki konfigurasi blok server awal, kita dapat menggunakannya sebagai dasar untuk file kedua kita. Salin untuk membuat file baru:
sudo cp /etc/nginx/sites-available/example.com /etc/nginx/sites-available/test.com
Buka file baru dengan sudohak istimewa di editor Anda:
sudo nano /etc/nginx/sites-available/test.com
Sekali lagi, pastikan Anda tidak menggunakan default_serveropsi untuk listenarahan dalam berkas ini jika Anda telah menggunakannya di tempat lain. Sesuaikan rootarahan agar mengarah ke akar dokumen domain kedua Anda dan sesuaikan server_nameagar sesuai dengan nama domain situs kedua Anda (pastikan untuk menyertakan alias apa pun).
Setelah selesai, berkas Anda kemungkinan akan terlihat seperti ini:
/etc/nginx/situs-tersedia/test.com
server {
listen 80;
listen [::]:80;
root /var/www/test.com/html;
index index.html index.htm index.nginx-debian.html;
server_name test.com www.test.com;
location / {
try_files $uri $uri/ =404;
}
}
Setelah selesai, simpan dan tutup berkas.
Langkah 4 — Mengaktifkan Blok Server dan Memulai Ulang Nginx
Sekarang setelah kita memiliki berkas blok server, kita perlu mengaktifkannya. Kita dapat melakukannya dengan membuat tautan simbolik dari berkas-berkas ini ke sites-enableddirektori, yang dibaca Nginx saat memulai.
Kita dapat membuat tautan ini dengan mengetik:
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
sudo ln -s /etc/nginx/sites-available/test.com /etc/nginx/sites-enabled/
File-file ini sekarang ditautkan ke direktori yang diaktifkan. Sekarang kita memiliki tiga blok server yang diaktifkan, yang dikonfigurasi untuk merespons berdasarkan listenarahannya dan server_name(Anda dapat membaca lebih lanjut tentang cara Nginx memproses arahan ini di sini ):
example.com:Akan menanggapi permintaan untuk example.comdanwww.example.com
test.com:Akan menanggapi permintaan untuk test.comdanwww.test.com
default: Akan menanggapi permintaan apa pun pada port 80 yang tidak cocok dengan dua blok lainnya.
Untuk menghindari kemungkinan masalah memori hash bucket yang dapat muncul akibat penambahan nama server tambahan, kami juga akan menyesuaikan satu nilai dalam /etc/nginx/nginx.confberkas kami. Buka berkas sekarang:
sudo nano /etc/nginx/nginx.conf
Di dalam berkas, temukan server_names_hash_bucket_sizeperintah tersebut. Hapus #simbol untuk menghapus komentar pada baris:
/etc/nginx/nginx.conf
http {
. . .
server_names_hash_bucket_size 64;
. . .
}
Simpan dan tutup berkas jika Anda sudah selesai.
Berikutnya, uji untuk memastikan tidak ada kesalahan sintaksis di salah satu file Nginx Anda:
sudo nginx -t
Jika tidak ada masalah yang ditemukan, mulai ulang Nginx untuk mengaktifkan perubahan Anda:
sudo systemctl restart nginx
Nginx sekarang seharusnya melayani kedua nama domain Anda.
Langkah 5 — Memodifikasi File Host Lokal Anda untuk Pengujian (Opsional)
Jika Anda belum menggunakan nama domain yang Anda miliki dan malah menggunakan nilai pengganti, Anda dapat mengubah konfigurasi komputer lokal agar Anda dapat menguji konfigurasi blok server Nginx untuk sementara.
Ini tidak akan memungkinkan pengunjung lain melihat situs Anda dengan benar, tetapi akan memberi Anda kemampuan untuk mengakses setiap situs secara independen dan menguji konfigurasi Anda. Ini bekerja dengan cara mencegat permintaan yang biasanya masuk ke DNS untuk menyelesaikan nama domain. Sebagai gantinya, kita dapat mengatur alamat IP yang kita inginkan agar komputer lokal kita tuju saat kita meminta nama domain.
Catatan: Pastikan Anda menjalankannya di komputer lokal selama langkah-langkah ini dan bukan di server jarak jauh. Anda harus memiliki akses root, menjadi anggota grup administratif, atau dapat mengedit file sistem untuk melakukan ini.
Jika Anda menggunakan komputer Mac atau Linux di rumah, Anda dapat mengedit berkas yang diperlukan dengan mengetik:
sudo nano /etc/hosts
Jika Anda menggunakan Windows, Anda dapat menemukan petunjuk untuk mengubah berkas host Anda di sini.
Anda perlu mengetahui alamat IP publik server Anda dan domain yang ingin Anda rutekan ke server. Dengan asumsi bahwa alamat IP publik server saya adalah 203.0.113.5, baris yang akan saya tambahkan ke berkas saya akan terlihat seperti ini:
/dll/host
127.0.0.1 localhost
. . .
203.0.113.5 example.com www.example.com
203.0.113.5 test.com www.test.com
Ini akan mencegat semua permintaan untuk example.comdan test.comdan mengirimkannya ke server Anda, yang merupakan apa yang kita inginkan jika kita tidak benar-benar memiliki domain yang kita gunakan.
Simpan dan tutup berkas jika Anda sudah selesai.
Langkah 6 — Menguji Hasil Anda
Setelah semuanya siap, Anda harus menguji apakah blok server berfungsi dengan benar. Anda dapat melakukannya dengan mengunjungi domain di peramban web Anda:
Anda akan melihat halaman seperti ini:
Blok server pertama Nginx
Jika Anda mengunjungi nama domain kedua Anda, Anda akan melihat situs yang sedikit berbeda:
Blok server kedua Nginx
Jika kedua situs ini berfungsi, Anda telah berhasil mengonfigurasi dua blok server independen dengan Nginx.
Pada titik ini, jika Anda menyesuaikan hostsberkas di komputer lokal untuk pengujian, Anda mungkin ingin menghapus baris yang Anda tambahkan.
Jika Anda memerlukan akses nama domain ke server Anda untuk situs publik, Anda mungkin ingin membeli nama domain untuk setiap situs Anda.
Kesimpulan
Sekarang Anda seharusnya memiliki kemampuan untuk membuat blok server untuk setiap domain yang ingin Anda hosting dari server yang sama. Tidak ada batasan nyata pada jumlah blok server yang dapat Anda buat, selama perangkat keras Anda dapat menangani lalu lintas.
Top comments (0)