Nginx (para arquivos estáticos) e Apache (para conteúdo dinâmico)?

5

Assim, todo o meu aplicativo é executado no apache muito bem. No entanto, quero testar o quanto os pedidos por segundo aumentam se eu colocar todos os arquivos estáticos no nginx.

Eu encontrei este tópico: link

Mas tenho alguns problemas. Eu sou completamente novo no nginx, então não tenho certeza onde colocar a configuração. (O arquivo está em /etc/nginx/nginx.conf, mas eu não sei se eu adicionei o código na parte inferior ou o quê?)

Além disso, como posso ter os dois servidores em execução ao mesmo tempo? É porque ambos ouvem na porta 80? Agora eu tenho que parar um para começar o outro, e isso é o mais longe que eu cheguei.

Obrigado por qualquer ajuda.

    
por Matthew 26.05.2010 / 20:28

2 respostas

4

Eles podem estar na mesma porta, se estiverem em IPs diferentes. Ou podem estar em portas diferentes com o mesmo IP, mas não em ambos (também podem ser IPs diferentes e portas diferentes). O cenário IP múltiplo é necessário se eles forem servidores diferentes, mas você pode usar vários IPs no mesmo servidor.

Eu juro que não estou tentando confundir você: -)

A diretiva de localização no link que você forneceu entraria no server diretiva (Observe que na documentação da diretiva location há "context: server"). Se você estiver usando uma versão recente do Ubuntu com uma instalação padrão do apt, provavelmente desejará editar o padrão no diretório habilitado para sites. Por exemplo (meio bobo já que passa tudo para o Apache):

server {
    listen   80 default;

    access_log  /var/log/nginx/localhost.access.log;

    location / {
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://localhost:2500;
    }
}

Neste caso, estou usando o mesmo servidor para ambos. O Nginx escuta no 80, e o Apache escuta no 2500. Você apontaria o DNS para o ip do servidor Nginx, já que é aquele que lida com todos os pedidos fazendo proxy para os outros servidores. Basicamente, da perspectiva do cliente, eles estão falando apenas com o servidor Nginx.

    
por 26.05.2010 / 20:55
1

Eu não posso ajudar com a configuração do nginx, porque eu ainda não usei, mas se você der uma olhada nos snippets de configuração da pergunta que você fez, verá que o Apache está rodando na porta 8080 Essa é a chave para ter ambos funcionando ao mesmo tempo - eles precisam estar em portas diferentes. Como o nginx está fazendo proxy para o Apache, o usuário nunca vê em qual porta este último está sendo executado, nem precisa fazê-lo.

    
por 26.05.2010 / 20:49