Nginx vs Apache como proxy reverso, qual deles escolher

31

esse tipo de pergunta talvez tenha sido perguntado aqui mas não consegui encontrar nenhuma que realmente correspondesse à minha pergunta. Ouvi dizer que o desempenho do nginx é bastante impressionante, mas o Apache tem mais docs, community (leia-se: expert) para obter ajuda

Agora, o que eu quero saber como os dois servidores da web comparam em termos de desempenho, facilidade de configuração, nível de customização, etc. Como servidor REVERSO PROXY em um ambiente vps?

Ainda estou pesando entre os dois para um aplicativo da Web Ruby (não ROR) servido com fino (um dos servidores web ruby).
Resposta específica será muito apreciada. Resposta geral não tocar na parte rubi é ok. Eu ainda sou noob na administração do servidor web.

    
por user22695 19.05.2010 / 05:43

5 respostas

29

Eu queria colocar isso em um comentário, já que eu concordo com o ponto mais importante da resposta do webdestroyas, mas ficou um pouco longo demais.

Você está em um ambiente VPS, isso significa que provavelmente você estará com pouca memória RAM. Por esta razão, você só vai querer o Nginx, já que sua pegada de memória é menor que o Apaches.

Também não concordo com alguns dos argumentos mencionados.

Facilidade de configuração:
O Nginx não é mais difícil que o Apache. É diferente. Se você está acostumado com o Apache, a mudança sempre será mais difícil, isso não significa que o estilo de configuração seja mais difícil. Eu migrei completamente do Apache para o Nginx há mais de um ano e hoje eu teria dificuldades para configurar um servidor Apache, ao passo que acho o Nginx extremamente fácil de configurar.

Para Ruby:
Nginx tem Passenger, no entanto, eu costumo vê-lo descrito como o método inferior para se conectar ao Ruby. Eu não sou um programador Ruby, então não posso verificar isso, mas muitas vezes vejo Unicorn e Thin mencionados como melhores alternativas.

Em conclusão:
O Nginx foi feito para ser um proxy reverso. Inicialmente tudo o que ele fazia era servir arquivos estáticos e fazer proxy reverso para um servidor de backend via HTTP / 1.0. Desde então, fastcgi, balanceamento de carga e vários outros recursos foram adicionados, mas o objetivo inicial do projeto era servir arquivos estáticos e proxy reverso. E isso faz muito bem.

O Apache, ao contrário, é um servidor web de uso geral. Não tenho dúvidas de que ele pode inverter o proxy perfeitamente, mas ele não foi projetado para ter uma pegada mínima de memória e, como resultado, requer mais recursos do que o Nginx, o que significa que meu argumento inicial de ambiente VPS entra em ação.

    
por 19.05.2010 / 08:44
7

Desempenho:
NGinX. Esse servidor é conhecido por ser um dos servidores da Web com melhor desempenho e é usado por muitas empresas diferentes (Notable, MediaTemple)

Facilidade de configuração:
Apache. A configuração do Apache é realmente simples e muito poderosa. O Nginx é poderoso, mas pode ser muito difícil de entender, pois parece mais uma linguagem de programação do que um arquivo de configuração.

Nível de personalização:
Apache. O Apache tem vários mods e outros plugins escritos para ele. Enquanto o Nginx ainda tem plugins feitos para ele, eu acho que o Apache tem muito mais do que o Nginx faz.

Para Ruby:
Eu sei que o Nginx pode ser usado como um poderoso balanceador de carga com o Mongrel / webrick. No entanto, o Apache tem Phusion / Passenger, o que torna a integração mais agradável.

Vencedor do Proxy Reverso:
Nginx

    
por 19.05.2010 / 06:04
5

O Nginx é baseado em eventos, enquanto o apache é baseado em processos. Sob carga alta, isso faz toda a diferença no mundo ... O Apache precisa criar um novo thread para cada conexão, enquanto o nginx não. Essa diferença aparece principalmente no uso de memória, mas também no tempo de resposta do usuário e outras métricas de desempenho. O Nginx pode lidar com dezenas de milhares de conexões ativas HTTP simultâneas no hardware moderno. O Apache usará de 1 a 2 MB de stack para cada conexão, então, fazendo as contas, você verá que você só pode lidar com algumas centenas ou talvez mil conexões simultaneamente sem começar a trocar.

Usamos o nginx na frente do Apache e do IIS em nosso ambiente como um proxy de balanceamento de carga e cache, e não poderíamos estar mais felizes. Usamos duas caixas pequenas de nginx no lugar de um par de dispositivos F5 alugados muito caros e nossos sites são muito mais rápidos em termos de tempos de resposta sensíveis e mensurados.

    
por 17.07.2010 / 07:41
1

Eu estava no mesmo dilema que você a cerca de duas semanas atrás.

Para dar uma resposta bem sucinta a você: De minha pesquisa, o nginx é realmente rápido e fácil de usar, mas só foi possível inverter os arquivos estáticos do proxy. O resto é parafuso em soluções que você tem que configurar ou rotear seu caminho.

O AFAIK nginx não possui arquivos de htaccess, então você precisa encontrar o caminho de volta dependendo do recurso.

AFAIK tudo o que é necessário funciona e eu vi tutoriais.

Eu irei com o nginx com meus testes e configuração de criação de perfil. Eu tenho um aplicativo LAMP típico.

Eu li que existem pessoas que invertem o proxy e servem arquivos estáticos do nginx e passam tudo como o PHP para uma instância do Apache em execução. Eles alegam uma boa troca. Não tenho dados de desempenho sobre isso, mas você pode querer saber.

    
por 19.05.2010 / 09:55
1

Eu tive sérios problemas com o mod_proxy do Apache em várias plataformas em vários ambientes diferentes nos últimos dois anos. De tempos em tempos, ele simplesmente parará de funcionar e a única cura parece ser reiniciar o servidor Apache.

Pessoalmente, eu não estaria perguntando "nginx vs Apache", mas "nginx vs lighttpd" - e isso é muito mais difícil!

    
por 19.05.2010 / 10:00