Jadual Kandungan
✅ Mengapa menggunakan nginx untuk ujian A/B?
? ️ Persediaan Asas: Split Traffic 50/50
? Tetapkan kuki (penting!)
? Hidangkan kandungan yang berbeza
? Hasil trek
✅ Ringkasan
Rumah Operasi dan penyelenggaraan Nginx Ujian a/b dengan nginx

Ujian a/b dengan nginx

Jul 28, 2025 am 02:07 AM

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

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.

Ujian a/b dengan nginx

✅ 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:

Ujian a/b dengan nginx
 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:

Ujian a/b dengan nginx
 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 atau root 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!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

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

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Aug 22, 2025 am 11:58 AM

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

Bagaimana anda menggunakan modul geo di nginx? Bagaimana anda menggunakan modul geo di nginx? Aug 29, 2025 am 08:02 AM

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.

Bagaimana saya boleh menilai permintaan had menggunakan nginx? Bagaimana saya boleh menilai permintaan had menggunakan nginx? Aug 23, 2025 am 12:54 AM

SteMitKypikeLoCkoCkoCheBerBiTiNDiSheAndAsDiSheApianTheNheApheAcheApheAcheAcheAcheBerBab

Apakah peranan Master dan Proses Pekerja di Nginx? Apakah peranan Master dan Proses Pekerja di Nginx? Aug 22, 2025 pm 01:45 PM

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

Bagaimana cara penimbal dari pelayan proksi yang perlahan? Bagaimana cara penimbal dari pelayan proksi yang perlahan? Aug 05, 2025 pm 04:28 PM

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

Arahan nginx try_files Arahan nginx try_files Aug 04, 2025 am 09:41 AM

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.

Bagaimana untuk mengelakkan akses ke fail tersembunyi seperti .htaccess atau .git? Bagaimana untuk mengelakkan akses ke fail tersembunyi seperti .htaccess atau .git? Aug 05, 2025 am 04:16 AM

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.

Bagaimanakah NGINX mengendalikan permintaan HTTPS dan sijil SSL? Bagaimanakah NGINX mengendalikan permintaan HTTPS dan sijil SSL? Aug 08, 2025 am 03:19 AM

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

See all articles