conflito de configuração de dois sites nginx

conflito de configuração de dois sites nginx

Tenho o nginx configurado para um dos meus domínios. Funciona como um frontend para o servidor de aplicativos Wildfly. Um dia resolvi configurar ambiente de testes beta na mesma máquina. Então adicionei outro subdomínio à configuração. Após reiniciar o nginx parou para servir o primeiro aplicativo. Meus arquivos de configuração são:

subdomínio principal:

server {
    listen 80;
    server_name sub.example.com;
    return 301 https://$host$request_uri;
}

server {

    listen 443;
    server_name sub.example.com;

    ssl_certificate           /etc/nginx/ssl/bundle.crt;
    ssl_certificate_key       /etc/nginx/ssl/sub.example.com.key;

    ssl on;
    ssl_session_cache  builtin:1000  shared:SSL:10m;
    ssl_protocols  TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4;
    ssl_prefer_server_ciphers on;

    access_log            /var/log/nginx/sub.example.com.access.log;

    location / {

      proxy_set_header        Host $host;
      proxy_set_header        X-Real-IP $remote_addr;
      proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header        X-Forwarded-Proto $scheme;

      proxy_pass          http://localhost:8080;
      proxy_read_timeout  90;
    }
}

subdomínio de teste:

server {
    listen 443;
    server_name sub-test.example.com;
    return 301 http://$host$request_uri;
}

server {

    listen 80;
    server_name sub-test.example.com;


    access_log            /var/log/nginx/sub-test.example.com.access.log;

    location / {

      proxy_set_header        Host $host;
      proxy_set_header        X-Real-IP $remote_addr;
      proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header        X-Forwarded-Proto $scheme;

      proxy_pass          http://localhost:8080;
      proxy_read_timeout  90;

    }
}

Preciso acrescentar que todas as configurações acima funcionam conforme o esperado quando estão sozinhas. Mas juntos eles não gostam um do outro. Solicitar o primeiro deles retorna o status HTTP NOT FOUND.

Claro, o problema pode estar localizado no meu servidor Wildfly. Ele está configurado para lidar com hosts virtuais e não tenho certeza se está tudo bem. Mas quando ambos os aplicativos são executados e apenas um deles é proxy do nginx, funciona bem.

Obrigado pela ajuda.

Responder1

Patryk, infelizmente você não pode definir mais de um servidor HTTPS baseado em nome. As explicações são longas, mas você pode conferiraquipara obter algumas informações e exemplos detalhados (baseado em Apache, não tenho ideia sobre nginx)

Responder2

Você pode usar mais de um site https.

A tecnologia é chamada SNI, ou indicação de nome de servidor.Referência

Ao mover a parte SSL para fora das configurações do servidor, você também reduz a sobrecarga de configuração dos certificados. Eu uso a seguinte estrutura em meus proxies reversos:

sites.d/ | -ssl.conf | -vhost1.conf | -vhost2.conf

ssl.conf então contém:

ssl_certificate /etc/ssl/certs/ssl.crt; ssl_certificate_key /etc/ssl/certs/server.key;

Outra opção seria a utilização de certificados separados com nomes comuns diferentes.

informação relacionada