Jadi saya menggunakan digital ocean dan nginx. Saya ingin meng-host beberapa situs web (proyek saya) tetapi tidak ingin membeli domain untuk masing-masing situs.
Apakah ada cara untuk meng-host beberapa situs web di nginx dan laut digital saat mengaksesnya menggunakan satu ip itu?
X.Y.Z.W/foo
,X.Y.Z.W/bar
)? Mengapa Anda tidak bisa mendapatkan domain untuk mereka? (Anda dapat menetapkan IP yang sama untuk banyak domain)?Jawaban:
Ada dua cara untuk mencapai ini. Entah Anda melakukan semuanya berdasarkan alamat IP, dengan lokasi subfolder, atau Anda perlu membeli satu domain dan kemudian memiliki beberapa subdomain pada domain itu (subdomain tidak boleh dikenakan biaya apa pun, jika Anda membeli domain, tetapi periksa dengan registrar Anda).
Saya tidak menyarankan metode alamat IP jika hanya karena sangat jahat harus mengingat alamat IP, dan jika Anda mencoba berbagi informasi kepada orang lain, Anda juga memiliki masalah yang sama dengan orang lain yang harus mengingat alamat IP.
Pendekatan satu-IP, banyak subfolder, tanpa nama domain
Di
nginx
sisi, kita perlu melakukan pendekatan 'jahat' untuk ini - satu alamat IP, banyak lokasi dokumen dan subfolder. Ini adalah pendekatan yang sangat sangat jahat dan dapat menyebabkan banyak masalah dengan beberapa kerangka kerja web.Dengan anggapan
nginx
instalasi default sebagai basis dari repositori, maka kita harus membuat konfigurasi situs untuk menangani setiap permintaan subdirektori proyek. Maka kita harus menghubungkannya di lokasi yang tepat.Buat
/etc/nginx/sites-available/my-projects
dengan yang berikut (gunakan ini sebagai templat / panduan - ini mengasumsikan tiga proyek dengan HTML statis dan tidak ada aplikasi web dinamis dalam PHP atau python atau yang serupa, dan Anda dapat menyalin masing-masing blok lokasi dan membuat lokasi baru sesuai; itu juga mengasumsikan Anda IP server adalah1.2.3.4
).Sekarang kita ganti konfigurasi default (hapus) dan tambahkan milik kita:
Dan kemudian restart
nginx
layanan:Pendekatan satu domain, banyak subdomain.
Dengan setiap
nginx
server {}
blok dalam konfigurasi, Anda perlu menentukan nama server, dan kemungkinan mengatur blok server keempat sebagai 'tangkap semua' untuk permintaan lainnya.Dengan skenario di atas, kami memiliki dua bagian: domain dan subdomain, dan konfigurasi server.
(1): Konfigurasi DNS
Siapkan DNS Anda di host Anda sedemikian rupa sehingga yang berikut ini benar dengan catatan DNS:
(2): Konfigurasi NGINX di server (1.2.3.4)
Sekarang untuk
nginx
konfigurasi Anda . Saya berasumsi Anda akan memiliki setup nginx default dan paket-paket dari Repositori (saya akan menggunakan 14,04 sebagai contoh dasar). Kami akan memiliki empat file konfigurasi/etc/nginx/sites-available
, pertama. Anda mungkin perlu menggunakansudo
saat membuat file-file ini, karena folder tersebut dimiliki olehroot
./etc/nginx/sites-available/catch-all
- ini akan menjadi 'tangkap semua' untuk domain yang tidak valid. Saya suka mengembalikan kode kesalahan http 410 (PERGI).Selanjutnya, kami mengatur konfigurasi untuk situs / proyek Anda. Saya akan menganggap mereka semua file statis. Masing-masing menyiratkan bahwa Anda memiliki direktori web yang berbeda untuk setiap proyek di server juga ('akar dokumen' berbeda)
/etc/nginx/sites-available/proj1.evil-projects.net
:/etc/nginx/sites-available/proj2.evil-projects.net
:/etc/nginx/sites-available/proj3.evil-projects.net
:Kami kemudian harus menghapus konfigurasi 'default' dari
/etc/nginx/sites-enabled
, dan menambahkan milik kami. Lagi-lagisudo
diperlukan di sini.Dan kemudian kita memulai kembali
nginx
proses:Setelah DNS menjalar, situs akan berfungsi sebagaimana mestinya.
sumber