nginx + problema do apache com porta 443

2

Aqui está a minha configuração do nginx para a porta 443:

server {
    listen           *:443;
    server_name      site.com;

    ssl         on;
    ssl_protocols       SSLv3 TLSv1;
    ssl_certificate     /www/certs/site.com.crt;
    ssl_certificate_key /www/certs/site.com.key;

     access_log /var/log/nginx.site.com-access_log;
    location ~* .(jpg|jpeg|gif|png|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|tar|wav|bmp|rtf|swf|ico|flv|txt|xml|docx|xlsx)$ {
        root /www/site.com/;
        index index.html index.php;
        access_log off;
        expires 30d;
    }
    location ~ /.ht {
        deny all;
    }
    location / {
        proxy_pass http://127.0.0.1:81/;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-for $remote_addr;
        proxy_set_header Host $host;
        proxy_connect_timeout 60;
        proxy_send_timeout 90;
        proxy_read_timeout 90;
        proxy_redirect off;
        proxy_set_header Connection close;
        proxy_pass_header Content-Type;
        proxy_pass_header Content-Disposition;
        proxy_pass_header Content-Length;
    }
}

Pergunta 1: Por que estou sendo solicitado a inserir uma passagem do PEM para o certificado? Como posso envergar a senha na configuração do nginx?

178-162-174-212:/usr/bin# service apache2 restart
Restarting web server: apache2.

178-162-174-212:/usr/bin# service nginx restart
Restarting nginx: Enter PEM pass phrase:
Enter PEM pass phrase:
[emerg]: bind() to 188.72.245.198:443 failed (98: Address already in use)
[emerg]: bind() to 188.72.245.198:443 failed (98: Address already in use)
[emerg]: bind() to 188.72.245.198:443 failed (98: Address already in use)
[emerg]: bind() to 188.72.245.198:443 failed (98: Address already in use)
[emerg]: bind() to 188.72.245.198:443 failed (98: Address already in use)
[emerg]: still could not bind()
nginx.

Pergunta 2: Por que há um conflito na porta 443?

Configuração do Apache:

NameVirtualHost *:81
Listen 127.0.0.1:81
Listen 999

<IfModule mod_ssl.c>
    Listen 443
</IfModule>

<IfModule mod_gnutls.c>
    Listen 443
</IfModule>

Se eu comentar a linha "Listen 443", o site.com:443 não funciona.

    
por Kirill Firsov 19.05.2011 / 01:48

1 resposta

5

Você tem o Apache e o nginx configurados para escutar na porta 443.

Parece que sua intenção é fazer com que o nginx assuma o controle dessa porta, portanto, você desejará remover essa configuração do Apache e reiniciar ambos os serviços: primeiro o Apache, depois o nginx. Isso deve permitir que o nginx associe à porta 443 e atenda a essas solicitações.

Quanto à senha do certificado, o nginx não suporta salvar a frase secreta para chaves privadas descriptografadas no arquivo de configuração (bom para elas; a obscuridade garantida por isso é inútil). Descriptografe a chave privada (e certifique-se de que ela seja legível apenas pelo usuário em que o nginx está sendo executado):

mv /www/certs/site.com.key /www/certs/site.com.keyold
openssl rsa -in /www/certs/site.com.keyold -out /www/certs/site.com.key
    
por 19.05.2011 / 02:07