Patryk, infelizmente você não pode definir mais de um servidor HTTPS baseado em nome. As explicações são longas, mas você pode checar aqui para algumas informações indeep e exemplos (baseado em apache, não tem idéia sobre nginx)
Eu tenho o nginx configurado para um dos meus domínios. Funciona como uma interface para o servidor de aplicativos Wildfly. Um dia decidi configurar o ambiente de testes beta na mesma máquina. Então, adicionei outro subdomínio à configuração. Após o reinício, 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;
}
}
Eu preciso adicionar que todas as configurações acima funcionem conforme o esperado, quando sozinhas. Mas juntos eles não gostam um do outro. A solicitação do primeiro deles retorna o status HTTP NÃO ENCONTRADO.
Claro, o problema pode estar localizado no meu servidor Wildfly. 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 é proxied por nginx, ele funciona bem.
Obrigado pela ajuda.
Patryk, infelizmente você não pode definir mais de um servidor HTTPS baseado em nome. As explicações são longas, mas você pode checar aqui para algumas informações indeep e exemplos (baseado em apache, não tem idéia sobre nginx)
Você pode usar mais de um site https.
A tecnologia é chamada SNI, ou indicação do nome do servidor. Referência
Ao mover a parte ssl para fora das configurações do servidor, você também reduz o overhaed para configurar os 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 o uso de certificados separados com nomes comuns diferentes.
Tags proxy nginx proxy-server