Rumah >pembangunan bahagian belakang >Golang >Penjelasan terperinci tentang hos maya dan fungsi mengikat nama domain rangka kerja Gin
Rangka kerja Gin ialah rangka kerja web ringan yang menyediakan fungsi asas yang diperlukan untuk membina aplikasi web dengan cepat. Rangka kerja Gin adalah fleksibel, cekap dan berskala, jadi ia digunakan secara meluas dalam bidang Internet. Antaranya, hos maya dan fungsi mengikat nama domain rangka kerja Gin adalah ciri penting yang tidak ada pada rangka kerja web lain Artikel ini akan memperkenalkan fungsi ini secara terperinci.
1. Apakah hos maya?
Hos maya adalah untuk mencipta berbilang hos maya bebas dan terpencil pada hos fizikal Setiap hos maya mempunyai nama domain sendiri, alamat IP dan direktori Web. Hos maya boleh mengkonfigurasi resolusi DNS yang berbeza untuk menunjuk ke alamat IP yang berbeza, membolehkan berbilang tapak web berjalan pada pelayan yang sama, sekali gus menjimatkan sumber dan kos pelayan.
2. Apakah nama domain mengikat?
Pengikatan nama domain ialah fungsi mengikat nama domain yang berbeza kepada hos fizikal yang sama untuk membolehkan berbilang tapak web dijalankan pada pelayan yang sama. Melalui resolusi nama domain, nama domain yang berbeza dipetakan ke alamat IP pelayan yang sama, dan bahagian pelayan menentukan tapak web mana yang diminta pengguna berdasarkan nama domain.
3. Penjelasan terperinci tentang hos maya dan fungsi mengikat nama domain rangka kerja Gin
Fungsi mengikat hos maya dan nama domain rangka kerja Gin dilaksanakan melalui perisian tengah. Antaranya, pelaksanaan hos maya bergantung pada perisian tengah vhost yang dibina ke dalam rangka kerja Gin, dan pelaksanaan pengikatan nama domain bergantung pada proksi terbalik nginx.
Perisian tengah vhost membenarkan rangka kerja Gin melaksanakan fungsi hos maya. Langkah pelaksanaan khusus adalah seperti berikut:
(1) Cipta folder konfigurasi baharu dalam direktori akar aplikasi, cipta fail vhosts.json di bawah folder ini dan simpan maklumat konfigurasi hos maya, seperti yang ditunjukkan di bawah :
[ { "host": "www.example1.com", "dir": "wwwroot1", "log": "logs/www1.log" }, { "host": "www.example2.com", "dir": "wwwroot2", "log": "logs/www2.log" } ]
Antaranya, setiap maklumat konfigurasi mengandungi tiga medan: hos mewakili nama domain hos maya, dir mewakili direktori Web hos maya, dan log mewakili nama fail log bagi hos maya.
(2) Dalam fungsi utama aplikasi, tambahkan kod berikut:
router := gin.Default() vhosts, err := vhost.LoadConfig("./config/vhosts.json") if err != nil { panic(err) } for _, vh := range vhosts { router.Group(vh.Host).Use(func(c *gin.Context) { c.Request.URL.Path = strings.TrimPrefix(c.Request.URL.Path, vh.Host) handler := http.FileServer(http.Dir(vh.Dir)) handler.ServeHTTP(c.Writer, c.Request) }) } router.Run()
Kod di atas melaksanakan membaca maklumat konfigurasi hos maya daripada fail konfigurasi dan menambah Fail perantaraan diproses untuk setiap hos maya. Antaranya, fungsi Kumpulan ialah kumpulan penghalaan rangka kerja Gin, yang digunakan untuk mengurus kumpulan laluan yang sama Parameter yang diluluskan di sini ialah nama domain hos maya.
Kemudian, tambah perisian tengah pada kumpulan penghalaan untuk memproses permintaan. Dalam middleware, gunakan fungsi strings.TrimPrefix untuk mengalih keluar nama domain hos maya dalam URL dan menyerahkan laluan yang tinggal kepada http.FileServer untuk diproses.
Kod di atas melaksanakan pemprosesan hos maya dan hos maya yang berbeza boleh diakses melalui URL yang berbeza.
Dalam aplikasi praktikal, biasanya perlu menggunakan proksi terbalik nginx untuk mengikat nama domain dan alamat IP. Proksi terbalik boleh memetakan nama domain yang berbeza kepada alamat IP dan nombor port yang sama, dan melakukan penghalaan dan pemajuan pada bahagian pelayan berdasarkan nama domain, dengan itu membolehkan berbilang tapak web berjalan pada pelayan yang sama.
Langkah pelaksanaan khusus adalah seperti berikut:
(1) Tambah maklumat konfigurasi hos maya dalam fail konfigurasi nginx, seperti ditunjukkan di bawah:
server { listen 80; server_name www.example1.com; location / { proxy_pass http://127.0.0.1:8080; } } server { listen 80; server_name www.example2.com; location / { proxy_pass http://127.0.0.1:8080; } }
Dalam kod konfigurasi di atas, dengar Alamat IP dan nombor port yang Hos Maya dengar ditentukan, nama_server menentukan nama domain hos maya dan lokasi menentukan laluan permintaan hos maya. Antaranya, proxy_pass memajukan permintaan ke alamat yang ditentukan, di sini ke port tempatan 8080.
(2) Dalam rangka kerja Gin, dengar alamat IP dan nombor port yang ditentukan untuk menerima permintaan yang dimajukan oleh nginx. Kod pelaksanaan khusus adalah seperti berikut:
router := gin.Default() router.GET("/", func(c *gin.Context) { c.String(http.StatusOK, "Hello, Gin!") }) router.Run(":8080")
Dalam kod di atas, port 8080 tempatan dipantau dan antara muka ujian ditambah di bawah laluan akar untuk mengembalikan rentetan.
Melalui konfigurasi di atas, anda boleh merealisasikan fungsi berbilang tapak web yang berjalan pada pelayan yang sama. Proksi terbalik nginx memetakan nama domain yang berbeza ke alamat IP pelayan yang sama, dan laluan dan memajukannya berdasarkan nama domain di bahagian pelayan Rangka kerja Gin bertanggungjawab untuk memproses permintaan yang diterima dan memetakannya ke hos maya yang sepadan berdasarkan nama domain, dengan itu mencapai Berbilang tapak web dijalankan pada pelayan yang sama.
4. Ringkasan
Fungsi pengikat hos maya dan nama domain rangka kerja Gin boleh membolehkan berbilang tapak web dijalankan pada pelayan yang sama, dengan itu menjimatkan sumber dan kos pelayan. Melalui gabungan penggunaan vhost middleware dan proksi terbalik nginx, fungsi pengikatan hos maya dan nama domain yang fleksibel, cekap dan berskala boleh dicapai. Hos maya dan fungsi mengikat nama domain rangka kerja Gin ialah ciri yang sangat penting untuk pembangun web, yang perlu dikuasai dan digunakan secara fleksibel.
Atas ialah kandungan terperinci Penjelasan terperinci tentang hos maya dan fungsi mengikat nama domain rangka kerja Gin. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!