Nginx nome do servidor conflitante para subdomínio

5

Atualmente, tenho um vhost em execução no Nginx para foo.domain.com e tudo funciona bem.

Eu criei um novo arquivo para um novo subdomínio que quero adicionar chamado bar.domain.com. Eu uso as mesmas configurações para ambos.

Quando eu reinicio o Nginx eu recebo

Restarting nginx: nginx: [warn] conflicting server name "" on 0.0.0.0:443, ignored nginx.

Quando vou a bar.domain.com vejo o que devo ver, mas quando vou para foo.domain.com vejo a página que bar.domain.com vincula.

Foo

upstream php-handler {
    server unix:/var/run/php5-fpm.sock;
}

server {
        listen 80;
        server_name foo.domain.com;
        return 301 https://$server_name$request_uri;
}

server {
        listen 443;

        ssl on;
        ssl_certificate      [path_foo]/cacert.pem;
        ssl_certificate_key  [path_foo]/privkey.pem;

        root [path]/foo;

        ...
}

Barra

server {
        listen 80;
        server_name bar.domain.com;
        return 301 https://$server_name$request_uri;
}

server {
        listen 443;

        ssl on;
        ssl_certificate      [path_bar]/cacert.pem;
        ssl_certificate_key  [path_bar]/privkey.pem;

        root [path]/bar;
}

Onde estou indo errado?

    
por RockJake28 26.07.2015 / 16:42

4 respostas

6

Parece que seus blocos https também precisam de nomes de servidor especificados por exemplo

server {
    listen 443;
    server_name bar.domain.com;
    ssl on;
    ssl_certificate      [path_bar]/cacert.pem;
    ssl_certificate_key  [path_bar]/privkey.pem;

    root [path]/bar;
}
    
por 26.07.2015 / 17:24
1

Você também pode ter arquivos adicionais em /etc/nginx/sites-available/<site-name> vinculados a /etc/nginx/sites-enabled/<site-name> .

As configurações desses arquivos podem entrar em conflito com o arquivo /etc/nginx/sites-available/default

    
por 23.12.2015 / 11:39
1

Eu tive um problema semelhante quando acidentalmente tive o nome do servidor duplicado:

server_name myserver.example.com myserver.example.com;

Corrigido alterando para:

server_name myserver.example.com;
    
por 08.05.2016 / 16:11
0

Verifique também cada arquivo em /etc/nginx/conf.d para duplicatas.

No meu caso, nginx -t passou nos testes - recebi essa mensagem de erro ao tentar iniciar o nginx.

Meus arquivos /etc/nginx/sites-enabled estavam livres de duplicatas de domínio (nome do servidor) e tinham apenas 1 referência a server_default (e não localhost duplicados)

Em vez disso, havia dois arquivos em conf.d que referenciavam um domínio específico (ou seja, dois arquivos tinham uma linha como: servername mydomain.com , em que um dos nomes de domínio estava listado em dois arquivos).

Minha solução: Portanto, certifique-se de que todos os arquivos em conf.d referenciem apenas um valor específico de servername (nome de domínio) uma vez, no máximo.

( infelizmente depois de corrigir o problema acima, agora recebo:
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use) mensagens de erro quando tento reiniciar o nginx.)

update : FYI, re: ... Address already in use mensagem de erro acima:
Tudo o que eu tive que fazer foi sudo fuser -k 80/tcp , então service nginx restart funcionou como um encanto!
Encontrei a resposta aqui: link

update2 :
Tem sido sugerido que outro processo estava usando a porta 80, (é por isso que matá-lo funcionou, e também faz sentido que nginx b / c não estava em execução no momento). link

Eles também apontam que ver o processo, antes de apenas matá-lo, pode fornecer informações sobre o que causou o problema.
Por isso, provavelmente é melhor usar: sudo fuser -k 80/tcp (sem a opção -k), seguido por grep para esses números de processos.
systemctl list-unit-files output, pode fornecer informações sobre processos conflitantes

ou:% fuser -kivn tcp 80 , onde:% -v imprime o nome do processo, além do ID do processo, -i faz com que seja solicitado antes de ser eliminado link

    
por 13.11.2018 / 22:24