Dalam senario aplikasi sebenar, menggunakan gabungan Nginx dan Golang boleh menyediakan perkhidmatan web dengan prestasi yang baik dan ketersediaan tinggi. Artikel ini akan memperkenalkan cara untuk membalikkan perkhidmatan Golang proksi melalui Nginx, dan cara menggunakan Nginx untuk pengimbangan beban di Golang.
1. Perkhidmatan Golang proksi terbalik Nginx
Proksi terbalik ialah seni bina pelayan biasa yang boleh meningkatkan prestasi dan kebolehpercayaan. Ia berfungsi dengan menghantar permintaan daripada klien ke pelayan proksi terbalik, yang kemudiannya memajukan permintaan ke pelayan sebenar dalam kluster pelayan dan mengembalikan respons kepada klien. Proksi terbalik Nginx ialah penyelesaian terbaik yang bukan sahaja berprestasi tinggi tetapi boleh mengendalikan beribu-ribu sambungan serentak dengan mudah.
Dalam aplikasi praktikal, terdapat dua kaedah utama proksi terbalik: satu ialah hos maya berdasarkan nama domain dan satu lagi berdasarkan laluan URL.
1. Proksi terbalik berasaskan nama domain
Andaikan nama domain anda ialah example.com, dan terdapat dua subdomain di bawah nama domain ini, satu ialah blog.example.com dan satu lagi ialah api .example.com. Anda mahu kedua-dua subdomain menghala ke pelayan yang berbeza. Kemudian Nginx anda boleh dikonfigurasikan seperti ini:
server { server_name blog.example.com; location / { proxy_pass http://your.blog.server; } } server { server_name api.example.com; location / { proxy_pass http://your.api.server; } }
2 proksi terbalik berasaskan URL
Andaikan anda ingin menyerahkan permintaan untuk /blog dan /api kepada pelayan yang berbeza untuk diproses. Kemudian Nginx anda boleh dikonfigurasikan seperti ini:
location /blog/ { proxy_pass http://your.blog.server; } location /api/ { proxy_pass http://your.api.server; }
Dengan cara ini, apabila pelanggan meminta kandungan pada example.com/blog/, Nginx akan memajukan permintaan ke your.blog.server dan bukannya mengembalikan kandungan tempatan. .
2. Golang menggunakan Nginx untuk pengimbangan beban
Sebelum menggunakan klien Golang dan Nginx untuk pengimbangan beban, anda perlu memasangnya terlebih dahulu Nginx dan konfigurasikannya.
Arahan untuk memasang Nginx pada Ubuntu adalah seperti berikut:
sudo apt-get update sudo apt-get install nginx
Selepas pemasangan selesai, tambah kandungan berikut dalam fail konfigurasi:
events { worker_connections 1024; } http { upstream your_go_server { server 127.0.0.1:8080; server 127.0.0.1:8081; } server { listen 80; server_name localhost; location / { proxy_pass http://your_go_server; } } }
Modul huluan di sini mentakrifkan beban yang akan dijalankan Pelayan seimbang, dan berbilang pelayan boleh dikonfigurasikan untuk pengimbangan beban. Modul pelayan mentakrifkan port seimbang beban Nginx. Laluan / dalam modul lokasi menunjukkan bahawa Nginx akan memajukan semua permintaan.
Untuk memuatkan baki, anda perlu menggunakan perpustakaan klien HTTP Golang pada bahagian klien dan tulis fungsi "cari" untuk Pilih pelayan dalam senarai pelayan pengimbangan beban.
func findServer() string { servers := []string{"http://127.0.0.1:8080", "http://127.0.0.1:8081"} //要进行负载均衡的服务器列表 n := len(servers) rand.Seed(time.Now().UnixNano()) //定义随机种子 index := rand.Intn(n) //生成随机数 return servers[index] //返回随机选择的服务器 }
Kemudian, apabila membuat permintaan HTTP, anda hanya perlu menambah "findServer()" di hadapan URL sumber:
client := &http.Client{} req, err := http.NewRequest("GET", findServer()+"/example", nil) response, err := client.Do(req)
Dengan cara ini, kod klien Golang boleh lulus Nginx's pengimbangan beban Sistem melaksanakan pemprosesan teragih dengan baik.
Ringkasan
Melaksanakan proksi terbalik dan pengimbangan beban melalui gabungan Nginx dan Golang boleh meningkatkan prestasi dan ketersediaan tinggi aplikasi anda. Proksi terbalik boleh memajukan permintaan pelanggan ke pelayan sebenar untuk diproses, manakala pengimbangan beban boleh mengimbangi beban permintaan untuk mengelakkan beban berlebihan pada pelayan tertentu. Saya harap pengenalan dan contoh dalam artikel ini dapat membantu anda menggunakan Nginx dan Golang dengan lebih baik.
Atas ialah kandungan terperinci nginx settings golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!