NginX como um problema de ligação de proxy reverso

2

Eu tenho uma nova instalação do Ubuntu 11 no MediaTemple e a configuração do NginX como um proxy reverso. Assim, itens estáticos são manipulados pelo NginX e o restante é manipulado pelo apache de acordo com estas instruções:

link

Tudo correu bem, exceto quando fiz o último passo de reiniciar o apache e, em seguida, reiniciar o NginX. O Apache reiniciou bem, mas quando eu reiniciei o NginX ele deu um erro sobre a ligação. Eu reiniciei o servidor e tentei reiniciar o apache seguido por NginX novamente. Desta vez, o apache relata um erro, mas o NginX reinicia bem.

* Restarting web server apache2                                                     
(98)Address already in use: make_sock: could not bind to address 127.0.0.1:80
no listening sockets available, shutting down
Unable to open logs
Action 'start' failed.
The Apache error log may have more information.

Os erros mais recentes no log do Apache parecem ser:

[Mon Nov 14 06:47:13 2011] [notice] caught SIGTERM, shutting down
[Mon Nov 14 06:47:14 2011] [notice] Apache/2.2.17 (Ubuntu) configured -- resuming normal operations
[Mon Nov 14 06:47:31 2011] [notice] caught SIGTERM, shutting down

De acordo com as instruções, eu tenho o IP externo do servidor em NginX e o localhost ip nos locais do apache.

Em seguida, parei o NginX reiniciar o Apache (funcionou bem novamente) e, quando reiniciei o NginX, os erros retornaram:

Restarting nginx: [emerg]: bind() to 0.0.0.0:80 failed (98: Address already in use)
[emerg]: bind() to 0.0.0.0:80 failed (98: Address already in use)
[emerg]: bind() to 0.0.0.0:80 failed (98: Address already in use)
[emerg]: bind() to 0.0.0.0:80 failed (98: Address already in use)
[emerg]: bind() to 0.0.0.0:80 failed (98: Address already in use)
[emerg]: still could not bind()
nginx.
    
por cchiera 14.11.2011 / 16:05

2 respostas

4

Está claro que a saída que você colou e que o nginx está tentando vincular na porta 80 em todos os endereços IP disponíveis, não apenas no seu endereço público.

Você deve rever cuidadosamente todas as diretivas listen nos arquivos de configuração nginx relevantes. Você pode fazer isso executando grep -r 'listen ' /etc/nginx/* .

Se você encontrar uma saída parecida com listen 80; (sem endereço IP especificado), você deve substituí-la por listen xx.xx.xx.xx: 80 , onde xx.xx.xx.xx é o seu endereço IP público.

    
por 14.11.2011 / 16:28
0

Eu tive quase o mesmo problema. (Ubuntu 10,04, 2 IPs reais, um para o Apache e outro para o nginx). Solução: todo bloco server {...} em arquivos de configuração DEVE ter a diretiva listen a.b.c.d: 80 . Caso contrário, o nginx tenta usar todos os IPs disponíveis.

    
por 14.05.2014 / 19:54