Лак -> Nginx -> Apache хороша ідея?


10

Я думаю про архітектуру нового веб-сервера. Чи хороша ідея, щоб Varnish як кеш перед Nginx був реверсивним проксі-сервером, а також подання статичних файлів перед apache для всіх важких підйомів?

Я збираюся запускати php та ruby ​​на додатках для рейлів.

Чи буде занадто багато накладних передач PHP-запитів до апашшю через два інші процеси?

Дуже дякую!

Відповіді:


8

Так, це дійсно. Моїм особистим підходом було б використовувати Varnish вперед та використовувати VCL для розподілу трафіку між статичними запитами NGINX та вашим важким підйомом (будь то Apache чи Passenger або ... це не має значення). Це особливо актуально, якщо він знаходиться на тій же машині, що вам не потрібні додаткові накладні витрати. Це не обов'язково купує тобі нічого.


так, це дуже гарна ідея, оскільки для цього лак повинен бути досить швидким
Зоран Заріч

6

Лак не (ще) не підтримує стиснення gzip, тому може бути ідея поміняти його на nginx попереду, щоб стиснути те, що лак відсилає назад. Оскільки лак і nginx не борються за однакові ресурси (nginx використовує процесор для стиснення gzip, тоді як лак використовує пам'ять), вони повинні безперебійно працювати на одній машині.

Лак тепер підтримує стиснення gzip , тому, якщо вам не потрібно припинення SSL (як це запропоновано в коментарях), я б запропонував поставити лак безпосередньо в контакт з Інтернетом.

Для http:

(інтернет) -> (лак, gzip, кешування, esi) -> (додаток)

Для https:

(інтернет) -> (nginx, ssl) -> (лак, gzip, кешування, esi) -> (додаток)

Якщо ви також хочете, щоб апаш там був (для всюдисущої підтримки mod_foobar), я поставив би його між лаком та додатком

Оновлення: оновлено, щоб включити підтримку gzip в лак 3.0. Додано ssl / esi, як було запропоновано в коментарях


Якщо все, що подає вміст для лаку, кодує його в gzip, то лак передасть його на gzipped, не поскаржившись: varnish-cache.org/wiki/FAQ/Compression Єдине, що лак не робить, - це взяти вміст, який не стискається з кешованого. програми та залиште його стиснутим. Це ваше розуміння також?
ewalk

Єдиний раз, коли ви запускаєте nginx перед лаком, це коли ви використовуєте ESI. Оскільки ви не можете виконати збірку ESI зі стислих сторінок, а Varnish не буде стискати зібрану сторінку, Nginx розміщується перед Varnish для забезпечення цього стиснення. Якщо джерело подає вміст, стиснений, Varnish передасть ці дані клієнту у стисненому вигляді.
користувач6738237482

Так, ESI - одна з причин, чому я рекомендував би цю конфігурацію, але я думаю, що якщо ваш бекенд стискається і ви не використовуєте ESI, ви можете обійтися без nginx, оскільки я вважаю, що лак може обробляти досить багато трафіку без ламаючи піт.
mogsie

@ user6738237482, nginx suport припинення SSL, лаку немає. Насправді, опинитися перед чимось на зразок лаку чи Apache - саме те, що nginx спочатку було розроблено, як швидкий, легкий проксі-сервер.
rmalayter

4

Розмір накладних витрат не повинен бути значним. Я припускаю, що причина, чому ви хочете мати ці два рівні, полягає в масштабованості; в такому випадку ви, швидше за все, побачите, що відносно апачу, що лак та nginx працюють не дуже важко.

Якщо ви всі три яруси на одній машині, перед досягненням потужності самого сервера має бути менший вплив на продуктивність.

Як альтернатива, чому б не лакувати + nginx з пасажиром? Раніше я використовував цю налаштування, і nginx за допомогою пасажира порівняно легкий, і він працював досить добре. Можливо, варто подумати про те, якщо ви не одружені з апачем, який керує вашою рейкою.


так, я можу перейти з apache на nginx для рейок, але даючи клієнтам можливість використовувати .htaccess файли - це + для apache, принаймні для php.
Зоран Заріч

2

Я адміністратор sys для платформи запуску електронної комерції. Ми використовуємо лак + nginx перед нашим стеком PHP / apache, і він творив чудеса.

У нас використовується програма з високою пам’яттю, і додаток використовував близько 15-20 гг ОЗП на веб-вузол, і коли ми поклали лак спереду, зараз це близько 8 гг ОЗУ на вузол. Вони ніколи не шипили.

Тому я дуже рекомендую його.


3
Ви знаєте, лак не говорить ssl правда?
Майк

1

Я запускаю Drupal з модулем підсилення на сервері Apache + PHP + MySQL, але перед ними я використовую Nginx з функцією gzip-static та використовую результати boost для обслуговування користувачів.

І понад усе, що я використовую лак, все на одному ПК, я маю непогані результати.

Я також використовую Nginx, щоб налаштувати заголовки, які Drupal не дуже добре спрацьовує з кешу.


0

Це не гарна ідея, якщо вам не потрібне щось на зразок ESI. У Nginx є власна система кешування, яка працює краще .


Я знаю, що це стара відповідь, але, на жаль, це посилання більше не доступне, тому я не можу підтвердити вашу претензію. На мій досвід, Варні важко перемогти за своєю швидкістю та гнучкістю як реверс-проксі.
Martijn Heemels


-1

Apache можна використовувати для завершення (дешифрування) SSL, перевірте http://noosfero.org/Development/Varnish#SSL


1
Будь ласка, уникайте розміщення посилань як відповідей, оскільки ваша відповідь, ймовірно, втратить будь-який сенс, коли на неї впливає linkrot . Подумайте про редагування своєї відповіді та включення відповідних частин із посилання, яке ви вказали у своїй відповіді. У будь-якому випадку залиште посилання на місці в якості посилання.
Брайан
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.