Apache & Nginx. Disambungkan oleh satu rantai

Bagaimana gabungan Apache & Nginx dilaksanakan dalam Timeweb

Bagi kebanyakan syarikat, Nginx + Apache + PHP adalah gabungan yang sangat tipikal dan biasa, dan Timeweb tidak terkecuali. Walau bagaimanapun, memahami dengan tepat bagaimana ia dilaksanakan boleh menjadi menarik dan berguna.

Apache & Nginx. Disambungkan oleh satu rantai

Penggunaan gabungan sedemikian, sudah tentu, ditentukan oleh keperluan pelanggan kami. Kedua-dua Nginx dan Apache memainkan peranan khas, masing-masing menyelesaikan masalah tertentu.

tetapan asas Apache dilakukan dalam fail konfigurasi Apache itu sendiri, dan tetapan untuk tapak klien berlaku melalui fail .htaccess. .htaccess ialah fail konfigurasi di mana pelanggan boleh mengkonfigurasi peraturan dan tingkah laku pelayan web secara bebas. Tetapan ini akan digunakan secara khusus pada tapaknya. Sebagai contoh, terima kasih kepada fungsi Apache, pengguna boleh menukar mod pengendalian dalam versi PHP yang sama daripada mod_php kepada mod_cgi; anda boleh menyediakan ubah hala, pengoptimuman untuk SEO, URL yang mudah, beberapa had untuk PHP.

Nginx digunakan sebagai pelayan proksi untuk mengubah hala lalu lintas ke Apache dan sebagai pelayan web untuk menyampaikan kandungan statik. Kami juga telah membangunkan modul keselamatan untuk Nginx yang membolehkan kami melindungi data pengguna kami, sebagai contoh, untuk memisahkan hak akses.

Mari bayangkan bahawa pengguna melawati tapak web pelanggan kami. Pertama, pengguna pergi ke Nginx, yang menyediakan kandungan statik. Ia berlaku serta-merta. Kemudian, apabila ia datang untuk memuatkan PHP, Nginx memajukan permintaan ke Apache. Dan Apache, bersama-sama dengan PHP, sudah menjana kandungan dinamik.

Ciri-ciri kumpulan Apache & Nginx dalam Timeweb

Pengehosan maya kami melaksanakan 2 skim operasi utama untuk Apache & Nginx: Dikongsi dan Berdedikasi.

Skim kongsi

Skim ini digunakan untuk kebanyakan pengguna. Ia dibezakan dengan kesederhanaan dan keamatan sumber: skim Kongsi menggunakan sumber yang lebih sedikit, itulah sebabnya tarifnya lebih murah. Menurut skema ini, pelayan menjalankan satu Nginx, yang membolehkannya melayani semua permintaan pengguna, dan beberapa contoh Apache.

Skim Kongsi telah bertambah baik untuk masa yang lama: secara beransur-ansur kami membetulkan kelemahan. Dengan mudah, ia boleh dilakukan tanpa perlu mengubah suai kod sumber.

Apache & Nginx. Disambungkan oleh satu rantai
Skim kongsi

Skim khusus

Dedicated memerlukan lebih banyak sumber, jadi tarifnya lebih mahal untuk pelanggan. Dalam skim Dedicated, setiap pelanggan mendapat Apache tersendiri. Sumber di sini dikhaskan untuk pelanggan, ia diperuntukkan secara eksklusif. Cara ia berfungsi: Terdapat beberapa versi PHP pada pelayan. Kami menyokong versi 5.3, 5.4, 5.6, 7.1, 7.2, 7.3, 7.4. Jadi, untuk setiap versi PHP Apachenya sendiri dilancarkan.

Apache & Nginx. Disambungkan oleh satu rantai
Skim khusus

Zon selamat. Menyediakan zon dalam Nginx

Sebelum ini, untuk Nginx, kami menggunakan banyak zon memori kongsi (zon) - satu blok pelayan bagi setiap domain. Persediaan ini memerlukan banyak sumber, kerana zon berasingan dibuat untuk setiap tapak. Walau bagaimanapun, dalam tetapan Nginx, kebanyakan tapak adalah daripada jenis yang sama, jadi mereka boleh diletakkan dalam satu zon terima kasih kepada penggunaan arahan peta dalam modul ngx_http_map_module, yang membolehkan anda menentukan surat-menyurat. Sebagai contoh, kami mempunyai templat zon di mana kami mesti membekalkan pembolehubah: laluan ke tapak, versi PHP, pengguna. Oleh itu, pembacaan semula konfigurasi Nginx, iaitu, tambah nilai, telah dipercepatkan.

Konfigurasi ini sangat menjimatkan sumber RAM dan mempercepatkan Nginx.

Muat semula tidak akan berfungsi!

Dalam skim Kongsi, kami telah menyingkirkan keperluan untuk memuat semula Apache apabila menukar tetapan tapak web. Sebelum ini, apabila seorang pelanggan ingin menambah domain atau menukar versi PHP, muat semula wajib Apache diperlukan, yang membawa kepada kelewatan dalam respons dan menjejaskan prestasi tapak secara negatif.

Kami menyingkirkan muat semula dengan mencipta konfigurasi dinamik. Terima kasih kepada mpm-itk (Modul Apache), setiap proses berjalan sebagai pengguna yang berasingan, yang meningkatkan tahap keselamatan. Kaedah ini membolehkan anda memindahkan data tentang pengguna dan document_rootnya daripada Nginx ke Apache2. Oleh itu, Apache tidak mengandungi konfigurasi tapak, ia menerimanya secara dinamik dan muat semula tidak lagi diperlukan.

Apache & Nginx. Disambungkan oleh satu rantai
Konfigurasi skema dikongsi

Bagaimana dengan Docker?

Banyak syarikat telah berpindah ke sistem berasaskan kontena. Timeweb sedang mempertimbangkan kemungkinan peralihan sedemikian. Sudah tentu, setiap keputusan ada kebaikan dan keburukan.

Bersama-sama dengan kelebihan yang tidak dapat dinafikan, sistem kontena menyediakan pengguna dengan sumber yang lebih sedikit. Dalam Timeweb, terima kasih kepada skim pengehosan yang diterangkan, pengguna tidak mempunyai had dalam RAM. Ia menerima lebih banyak sumber daripada dalam bekas. Di samping itu, pengguna mungkin mempunyai lebih banyak modul Apache yang dimuatkan.

Timeweb menguasai kira-kira 500 tapak web. Kami mengambil tanggungjawab yang besar dan tidak membuat perubahan segera dan tidak wajar kepada seni bina yang kompleks. Gabungan Apache & Nginx boleh dipercayai dan diuji masa. Kami, seterusnya, cuba mencapai prestasi maksimum melalui konfigurasi unik.

Untuk pengendalian yang berkualiti tinggi dan pantas bagi sejumlah besar tapak, anda perlu menggunakan templat dan konfigurasi dinamik Apache dan Nginx. Ia membolehkan anda dengan mudah dan cepat mentadbir sejumlah besar pelayan yang serupa.

Sumber: www.habr.com

Tambah komen