Ujian a/b dengan nginx
Modul peta Nginx menggunakan hash atau cookies IP untuk memberikan pengguna kepada kumpulan A/B berdasarkan hashing IP atau cookies; 2. Jika tidak ada kuki, tetapkan kuki yang berterusan untuk memastikan konsistensi kumpulan pengguna; 3. Laluan ke backends yang berbeza atau direktori statik mengikut nilai cookie; 4. Lulus Versi Pembekalan Lapisan Bekalan Lapisan Statistik melalui header HTTP-Kaedah ini tidak memerlukan perubahan pada kod aplikasi, adalah cekap dan boleh dipercayai, dan menyedari ujian A/B pelayan ringan.
Ujian A/B dengan NGINX adalah cara yang ringan dan cekap untuk melayani versi kandungan web anda yang berbeza kepada pengguna-tanpa memerlukan logik backend kompleks atau alat pihak ketiga. Nginx boleh mengarahkan trafik berdasarkan kuki, tajuk, atau tugasan rawak menggunakan modul map
terbina dalamnya. Inilah cara untuk menetapkannya dengan mudah dan berkesan.

✅ Mengapa menggunakan nginx untuk ujian A/B?
- Tiada perubahan kod aplikasi : Anda mengawal trafik pemisahan di lapisan proksi.
- Cepat dan rendah overhead : Nginx mengendalikan penghalaan sebelum memukul pelayan aplikasi anda.
- Tugasan Pengguna Berterusan : Gunakan kuki untuk memastikan pengguna tinggal dalam kumpulan yang sama.
- Mudah untuk melancarkan kembali : Hanya tukar konfigurasi dan tambah nilai nginx.
? ️ Persediaan Asas: Split Traffic 50/50
Gunakan modul map
nginx untuk secara rawak menyerahkan pengguna ke versi A atau B:
# Di blok HTTP anda peta $ cookie_ab_test $ ab_version { ~*Aa; ~*Bb; lalai ""; } # Sekiranya tidak ada kuki, berikan secara rawak peta $ ab_version $ set_cookie { "" ""; A "ab_test = a"; B "ab_test = b"; } # Di blok pelayan anda lokasi / { # Tetapkan kuki jika belum ditugaskan jika ($ ab_version = "") { Tetapkan $ ab_version $ http_cookie; # Gunakan $ remote_addr dan $ msec untuk mendapatkan tingkah laku pseudo-rawak Tetapkan $ ab_version $ http_cookie; # Lebih baik: Gunakan pendekatan berasaskan hash (lihat di bawah) } # Hidangkan latar belakang atau laluan akar yang berbeza jika ($ ab_version = "b") { proxy_pass http: // backend_b; # atau root/var/www/b/; } proxy_pass http: // backend_a; # Versi lalai }
⚠️ Ini adalah contoh asas - untuk rawak yang lebih baik, gunakan hash IP klien atau ejen pengguna:

peta $ remote_addr $ ab_hash { ~.* "A"; lalai "B"; } # Lebih baik: Tentukan tetapi tugasan yang konsisten peta $ remote_addr $ ab_version { ~^(.) $ {capture} $ 1; lalai ""; } # Atau gunakan hash modul: peta $ remote_addr $ ab_version { ~.* "A"; lalai "B"; }
Lebih baik lagi - gunakan hash yang konsisten dengan garam:
peta $ remote_addr $ ab_version { ~^(? <ip>.) $ $ ip; } # Hash IP ke 0 atau 1 peta $ ab_version $ ab_group { ~.* "B"; lalai "A"; }
Sebenarnya, untuk sebenar 50/50, lakukan ini:

peta $ msec $ remote_addr $ ab_version { ~.* "A"; lalai "B"; }
Tidak, itu masih tidak menentukan setiap pengguna.
✅ Amalan Terbaik: Gunakan hash garam ip untuk diberikan secara konsisten :
peta $ remote_addr $ ab_version { ~.* "A"; lalai "B"; } # Versi sebenar: peta $ remote_addr $ ab_hash { ~.* "A"; lalai "B"; }
Mari Betulkan ini dengan bersih:
# Di blok http peta $ remote_addr $ ab_version { ~^(? <first> [0-9a-fa-f] {1}) $ pertama; lalai "0"; } # Menukar char hex ke nombor, kemudian mod 2 peta $ ab_version $ ab_group { ~^[0-7] a; lalai b; }
Ini memberikan ~ 50% perpecahan dan tugasan yang konsisten setiap IP.
? Tetapkan kuki (penting!)
Sekiranya pengguna tidak mempunyai cookie ab_test
, tetapkannya:
# Di blok lokasi jika ($ cookie_ab_test = "") { add_header set-cookie "ab_test = $ ab_group; path =/; max-age = 31536000"; }
Sekarang pengguna tinggal di kumpulan mereka di sesi.
? Hidangkan kandungan yang berbeza
Sekarang lalu lintas:
lokasi / { jika ($ cookie_ab_test = "b") { proxy_pass http: // your-backend-b; rehat; } proxy_pass http: // your-backend-a; }
Atau jika kandungan statik:
jika ($ cookie_ab_test = "b") { root/var/www/html-b; } root/var/www/html-a;
? Hasil trek
Anda perlu log atau lulus versi ke aplikasi anda:
proxy_set_header x-ab-version $ cookie_ab_test;
Kemudian aplikasi anda boleh log versi mana yang pengguna lihat - berguna untuk analisis.
✅ Ringkasan
- Gunakan
map
untuk memberikan pengguna kepada kumpulan A/B berdasarkan IP atau cookie. - Tetapkan kuki berterusan supaya pengguna tinggal dalam satu kumpulan.
- Lalu lintas laluan melalui
proxy_pass
atauroot
berdasarkan kumpulan. - Lulus versi ke aplikasi anda melalui tajuk untuk menjejaki.
Kaedah ini cepat, boleh dipercayai, dan menyimpan logik aplikasi anda bersih. Tidak perlu eksperimen JavaScript atau alat luaran melainkan jika anda memerlukan penargetan lanjutan.
Pada asasnya, Nginx Cookies Map = mudah, ujian A/B tahap pelayan.
Atas ialah kandungan terperinci Ujian a/b dengan nginx. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undress AI Tool
Gambar buka pakaian secara percuma

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Diski/ooverheadisthemainperformanceconcern, ashighrequestvolumesincreasewriteoperations, berpotensibottleneckingsloworoverloaddisks; menggunakancesscess_logofffornon-criticalpathslikealthChecksreduceSunnesaryWrites.2.com.comsplexplogwieldewrites.2.com.comsplexpleGoSwiRyWrites.2

Modul GEO Nginx digunakan untuk membuat pembolehubah berdasarkan alamat IP klien. 1. Pemetaan julat IP dan nilai pembolehubah boleh ditakrifkan melalui arahan GEO di blok HTTP, seperti menetapkan IP persendirian ke 1 dan selebihnya ke 0, dan menggunakan pembolehubah ini dalam pelayan atau lokasi untuk kawalan akses; 2 Jika geolokasi peringkat kebangsaan diperlukan, modul GEO asli tidak menyokong pertanyaan langsung dari pangkalan data GEOIP, dan ia bergantung kepada modul pihak ketiga NGX_HTTP_GEOIP2_MODULE. GEO asli hanya terpakai untuk mengkonfigurasi segmen CIDRIP secara manual (seperti IP Rusia dalam contoh), tetapi penyelenggaraan adalah sukar dan tidak disyorkan untuk digunakan dalam persekitaran pengeluaran; 3. Amalan terbaik adalah untuk menggabungkan arahan peta untuk meningkatkan fleksibiliti, seperti menetapkan $ C dengan GEO terlebih dahulu.

SteMitKypikeLoCkoCkoCheBerBiTiNDiSheAndAsDiSheApianTheNheApheAcheApheAcheAcheAcheBerBab

Nginxusesamaster-workerarchitectureforhighperformanceAndStability; themasterprocessmanagestheserverbyreadingconfigurations, bindingports, startworkers, andhandlingsignals, whileworkerprocesseshandleclientrequestsindependirdentinginganevent-driven, non-dorroven, non -driven

Menetapkan dengan betul mekanisme penimbal dapat meningkatkan prestasi dan pengalaman pengguna pelayan proksi yang mengakses pelayan sasaran yang perlahan. 1. Membolehkan fungsi proxy_buffering nginx, mengoptimumkan saiz penampan melalui parameter proksi_buffers dan proxy_buffer_size, mengurangkan masa menunggu pengguna, tetapi boleh menjejaskan senario output masa nyata; 2. Gunakan proxy_cache ke data cache dengan perubahan yang jarang berlaku dalam kandungan, tetapkan masa tamat tempoh dalam kombinasi dengan proxy_cache_valid untuk mempercepat kelajuan tindak balas permintaan berulang, dan perhatikan untuk mengelakkan memaparkan data lama; 3. Mengawal tingkah laku pelanggan, seperti menggunakan bacaan streaming (stream = benar), melarang badan tindak balas terlebih dahulu untuk bekerjasama dengan proksi yang lebih baik

try_files periksa sama ada fail atau direktori wujud dalam rangka, dan jika ia tidak sepadan, redirect dalaman untuk jatuh balik; 2. Penggunaan biasa adalah untuk mencuba $ uri dan $ uri / pertama, dan akhirnya kembali ke /index.php$is_args$args untuk menyokong URL yang indah; 3. Adalah disyorkan untuk menggunakan @named_location untuk meningkatkan kebolehbacaan konfigurasi dan mengelakkan logik pendua; 4. Kesilapan umum termasuk hilang $ is_args $ args yang mengakibatkan kehilangan parameter pertanyaan, penggunaan semula penggunaan semula di lokasi biasa PHP untuk menaikkan gelung atau 404, dan tersilap berfikir bahawa pengalihan luar akan dicetuskan - sebenarnya, hanya melompat dalaman, penggunaan yang betul dapat mencapai file statik yang efisien dan tepat dari permintaan dinamik.

Mencegah akses kepada fail tersembunyi seperti .htaccess atau .GIT bertujuan untuk melindungi maklumat konfigurasi sensitif laman web dan mengelakkan diserang atau pelanggaran data. Terdapat tiga penyelesaian utama: 1. Pengguna Apache boleh menambah peraturan ke fail .htaccess untuk mengelakkan akses kepada semua atau fail tersembunyi tertentu; 2. Pengguna Nginx boleh menggunakan peraturan lokasi dalam konfigurasi untuk menyekat akses kepada fail tersembunyi; 3. Betul tetapkan keizinan fail dan gerakkan fail sensitif dari direktori root web untuk meningkatkan keselamatan.

NginxhandlesHTTPSrequestsbyterminatingSSL/TLSconnections,decryptingclientrequests,andforwardingthemtobackendserversorservingcontentdirectly.1.SSL/TLSterminationoccursatNginx,whereitmanagestheTLShandshake,presentsthecertificate,andestablishesasecurech
