Nginx vs Apache як зворотний проксі, який вибрати


36

такий тип запитань, можливо, був тут заданий, але я не зміг знайти жодного, що дійсно відповідало б моєму питанню. Чув, що продуктивність nginx дуже вражає, але Apache має більше документів, спільноти (читайте: експерт), щоб отримати допомогу

Тепер, що я хочу знати, як обидва веб-сервери порівнюють за продуктивністю, легкістю конфігурації, рівнем налаштування тощо. ЯК ПОВЕРНУТИСЯ ПРОФІЙСЬКИЙ сервер у vps середовищі ??

Я все ще важу між двома, щоб веб-додаток ruby ​​(не ROR), що подається з тонким (один із веб-сервера ruby).
Конкретна відповідь буде дуже вдячна. Загальна відповідь про те, що не торкатися рубінової частини, нормально. Я все ще noob в адміністрації веб-сервера.


tnx до мартіна та webdestroya відповіді, зараз я схиляюся до nginx
mhd

Хіба не було б більше сенсу працювати з спеціально розробленим зворотним проксі, як лак?
птман

Відповіді:


31

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

Ви знаходитесь в середовищі VPS, це означає, що ви, швидше за все, будете мати низький обсяг оперативної пам’яті. Тільки з цієї причини вам потрібно буде Nginx, оскільки його пам'ять менша, ніж Apaches.

Також я не згоден з деякими згаданих аргументів.

Легкість налаштування:
Nginx не складніше, ніж Apache. Це інакше. Якщо ви звикли до Apache, змінити завжди буде складніше, це не означає, що сам стиль конфігурації є складнішим. Я повністю мігрував з Apache на Nginx понад рік тому, і сьогодні я б намагався налаштувати Apache-сервер, тоді як налаштовувати Nginx надзвичайно просто.

Для Ruby: У
Nginx є пасажирський, проте, як правило, я вважаю це описаним як нижчий метод підключення до Ruby. Я не є програмістом Рубі, тому не можу цього перевірити, але я часто бачу, як Єдиноріг і Тонкий згадуються як кращі альтернативи.

На
закінчення : Nginx був зроблений як зворотний проксі. Спочатку все це було - подання статичних файлів та зворотний проксі на сервер, який працює за допомогою сервера HTTP / 1.0. З тих пір були додані fastcgi, балансування завантаження та різні інші функції, але початковою метою дизайну було обслуговування статичних файлів та зворотного проксі. І це робить насправді добре.

Apache, навпаки, є веб-сервером загального призначення. Я не сумніваюся, що він може прекрасно змінити проксі, але він не був розроблений таким чином, щоб мати мінімальний слід пам'яті, і, як результат, йому потрібно більше ресурсів, ніж Nginx, що означає, що мій початковий аргумент середовища VPS приходить в гру.


+1 для уточнення.
Джон Гарденєр

Я б пішов так далеко, щоб рекомендувати це як єдиний веб-сервер. дивіться мої коментарі serverfault.com/questions/133481/… <- тут. Я використовую його як єдиний веб-сервер свого VPS, і я знайшов інших користувачів на борту з FastCGI для їх PHP / CGI додатків.
Джейсон

Джейсон, я використовую його як єдиний веб-сервер вже більше року, і він обробляє мільйони завантажень сторінок на день. Я повністю згоден з вашою рекомендацією! :)
Мартін Фьордвальд

8

Продуктивність:
NGinX. Цей сервер, як відомо, є одним з найбільш ефективних веб-серверів, і використовується багатьма різними компаніями (Notable, MediaTemple)

Легкість налаштування:
Apache. Конфігурація Apache - це дуже просто і дуже потужно. Nginx є потужним, але його важко зрозуміти, оскільки він здається більше схожим на мову програмування, ніж на файл конфігурації.

Рівень налаштування:
Apache. В Apache є багато мод та інших плагінів, написаних для цього. Хоча в Nginx для нього ще створені плагіни, я думаю, що Apache має набагато більше, ніж робить Nginx.

Для Рубі:
Я знаю, що Nginx може використовуватися як потужний балансир навантаження з Mongrel / webrick. Однак Apache має Phusion / Passenger, що робить інтеграцію приємнішою.

Переможець зворотного проксі:
NGinX


2
Мені цікаво, не сперечаючись. Чому Nginx є переможцем у зворотному проксі? Решта вашої відповіді насправді не виділяє одну з інших. Якщо що-небудь, це має перевагу Apache.
Джон Гарденєр,

1
Ну, тому що, здебільшого, ви хочете зворотний проксі через велике навантаження. Що означало б ефективність, мабуть, найбільшу проблему, і тоді Nginx був переможцем, і саме тому я вибрав її. Як розробник, я люблю apache, але з точки зору "як я можу отримати максимальну продуктивність від цього веб-сервера", я б пішов з Nginx
Мітч Демпсі

8

Nginx заснований на подіях, а apache - на основі процесів. При великому навантаженні це має велику різницю у світі ... Apache має роздрібнити або запустити новий потік для кожного з'єднання, тоді як nginx не робить. Ця різниця виявляється головним чином у використанні пам'яті, а також у часі відгуку користувачів та інших показниках продуктивності. Nginx може обробляти десятки тисяч одночасних HTTP-з'єднань на рівні сучасного обладнання. Apache використовуватиме 1-2 МБ стека для кожного з'єднання, тому, виконуючи математику, ви бачите, що ви можете обробити лише кілька сотень, а може і тисячу підключень одночасно, не починаючи міняти місцями.

Ми використовуємо nginx перед Apache та IIS у нашому середовищі як проксі-балансувальний навантаження та кешування, і не може бути щасливішим. Ми використовуємо два невеликих коробки nginx замість пари дуже дорогих орендованих пристроїв F5, і наші сайти набагато швидші як у відчутті, так і в виміряному часі відгуку.


1

Я був у тій же дилемі, що і Ви, два тижні тому.

Щоб дати тобі справді лаконічну відповідь: з мого дослідження nginx дуже швидкий і ресурсоємний, але він мав намір лише повернути статичні файли проксі. Решта - це гвинти на рішеннях, які вам потрібно налаштувати або скласти сценарій.

AFAIK nginx не має файлів htaccess, тому вам потрібно знайти свій шлях, якщо це залежить від цієї функції.

AFAIK все, що потрібно, працює, і я бачив підручники.

Я піду з nginx з моїм налаштуванням тестування та профілювання. У мене є типова програма LAMP.

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


2
Вимкнення скасування htaccess на apache з міркувань продуктивності досить поширене, підтримка такої функції на сервері, призначеному для високої продуктивності, не має особливого сенсу.
theotherreceive

Дякуємо, що додали цю заяву. ОП - це не адміністратор, тому нам потрібно зрозуміти.
розгортати мавку

1

В останні кілька років у мене були серйозні проблеми з mod_proxy Apache на різних платформах у різних середовищах. Час від часу він просто перестане працювати, і єдиним лікуванням, здається, є перезапуск сервера Apache.

Особисто я б не запитував "nginx vs Apache", а "nginx vs lighttpd" - і це набагато жорсткіший дзвінок!


Дійсний аргумент, але останній раз, коли я перевірив, у lighttpd все ще були довгі виправлені помилки і він був відомий витоком пам'яті. Він не радив адміністраторам розгортати виробництво. Чи змінилося це?
розгорнути мавку

Він має застережень, звичайно (особливо там , де служить дуже великих файлів), але це значно стабільніший , ніж Apache в якості проксі - у мене не було ніяких реальних проблем в декількох розгортання протягом останніх шести місяців
Мо

Я списали Lighttpd зі списку кандидатів по якій - то причини забутого :)
MHD
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.