talvez esse tipo de pergunta tenha sido feito aqui, mas não encontrei nenhuma que realmente correspondesse à minha pergunta. Ouvi dizer que o desempenho do nginx é bastante impressionante, mas o Apache tem mais documentos, comunidade (leia-se: expert) para obter ajuda
Agora o que eu quero saber, como os dois servidores da web se comparam em termos de desempenho, facilidade de configuração, nível de personalização, etc. Como servidor proxy reverso em um ambiente vps?
Ainda estou pesando entre os dois para um aplicativo web ruby (não ROR) servido com thin (um servidor web ruby).
Resposta específica será muito apreciada. A resposta geral que não toca na parte rubi está correta. Eu ainda sou novato em administração de servidores web.
Respostas:
Eu queria colocar isso em um comentário, pois concordo com o ponto mais importante da webdestroy como resposta, mas demorou um pouco demais.
Você está em um ambiente VPS, isso significa que você provavelmente terá pouca memória RAM. Por esse motivo, você desejará o Nginx, pois seu espaço de memória é menor que o Apaches.
Também não concordo com alguns dos argumentos mencionados.
Facilidade de configuração:
Nginx não é mais difícil que o Apache. É diferente. Se você está acostumado ao Apache, as alterações sempre serão mais difíceis, isso não significa que o estilo de configuração em si seja mais difícil. Migrei completamente do Apache para o Nginx há mais de um ano e hoje eu lutaria para configurar um servidor Apache, considerando o Nginx extremamente fácil de configurar.
Para Ruby: o
Nginx possui o Passenger, no entanto, geralmente o vejo descrito como o método inferior para conectar-se ao Ruby. Como não sou um programador Ruby, não posso verificar isso, mas geralmente vejo o Unicorn e o Thin mencionados como melhores alternativas.
Em conclusão: o
Nginx foi criado para ser um proxy reverso. Inicialmente, tudo o que fez foi servir arquivos estáticos e reverter o proxy para um servidor back-end via HTTP / 1.0. Desde então, o fastcgi, o balanceamento de carga e vários outros recursos foram adicionados, mas seu objetivo inicial era servir arquivos estáticos e proxy reverso. E faz isso muito bem.
Apache, pelo contrário, é um servidor web de uso geral. Não tenho dúvidas de que ele pode reverter o proxy perfeitamente, mas não foi projetado para ter um espaço mínimo de memória e, como resultado, requer mais recursos do que o Nginx, o que significa que meu argumento inicial do ambiente VPS entra em jogo.
fonte
Desempenho:
NGinX. Esse servidor é conhecido por ser um dos servidores 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 possui vários mods e outros plugins escritos para ele. Embora o Nginx ainda tenha plugins feitos para isso, acho que o Apache possui muito mais que o Nginx.
Para Ruby:
Eu sei que o Nginx pode ser usado como um poderoso balanceador de carga com o Mongrel / webrick. No entanto, o Apache possui Phusion / Passenger, o que torna a integração mais agradável.
Vencedor do proxy reverso:
NGinX
fonte
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 bifurcar ou iniciar um novo encadeamento para cada conexão, enquanto o nginx não. Essa diferença aparece principalmente no uso da memória, mas também no tempo de resposta do usuário e em outras métricas de desempenho. O Nginx pode lidar com dezenas de milhares de conexões de manutenção de HTTP simultâneas em hardware moderno. O Apache usará de 1 a 2 MB de pilha para cada conexão; portanto, fazendo as contas, você pode lidar apenas 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 isgin nginx no lugar de um par de dispositivos F5 alugados muito caros e nossos sites são muito mais rápidos nos tempos de resposta de medição e de sensação.
fonte
Eu estava no mesmo dilema que você cerca de duas semanas atrás.
Para lhe dar uma resposta realmente concisa: Na minha pesquisa, o nginx é realmente rápido e fácil de usar, mas só foi aceito para reverter arquivos estáticos de proxy. O resto são soluções que você precisa configurar ou criar um script do seu jeito.
O AFAIK nginx não possui arquivos htaccess, portanto, você deve encontrar o seu caminho, dependendo desse recurso.
AFAIK tudo o que é necessário funciona e já vi tutoriais.
Eu irei com o nginx na minha configuração de teste e 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 todo o resto 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.
fonte
Eu tive sérios problemas com o mod_proxy do Apache em uma variedade de plataformas em vários ambientes diferentes nos últimos anos. De tempos em tempos, ele simplesmente para de funcionar e a única solução parece ser reiniciar o servidor Apache.
Pessoalmente, eu não perguntaria "nginx vs Apache", mas "nginx vs lighttpd" - e essa é uma decisão muito mais difícil!
fonte