Como criar subdomínios usando nginx e proxy_pass para cada

3

Atualmente, tenho a configuração nginx para o meu servidor em my.server.com . Usando a configuração atual, acesso diferentes aplicativos usando http://my.server.com/app1 ou http://my.server.com/app2 .

Eu tenho um apps.conf colocado em /etc/nginx/sites-enabled/ , isso é o que parece:

upstream app1_servers {
    server 172.12.11.10:8080;
}
upstream app2_servers{
    server 172.12.11.10:9090;
}
server {
    listen 80;
    server_name my.server.com;
    return 301 https://my.server.com/$request_uri; #force https
}

server {
    listen 443;
    ssl on;
    ssl_certificate /etc/ssl/my.server.com/cert.pem;
    ssl_certificate_key /etc/ssl/my.server.com/priv.pem;
    server_name my.server.com;

    location /app1 {
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Host $host;
            proxy_set_header X-Forwarded-Server $host;
            proxy_set_header X-Forwarded-Proto https;
            proxy_pass http://app1_servers/app1;
            proxy_redirect http://$host https://$host;
          proxy_set_header Host $host;
    }
    location /app2 {
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Host $host;
            proxy_set_header X-Forwarded-Server $host;
            proxy_set_header X-Forwarded-Proto https;
            proxy_pass http://app2_servers/app2;
            proxy_redirect http://$host https://$host;
            proxy_set_header Host $host;
    }
}

Pergunta

O acima funciona bem. No entanto, agora eu gostaria de alterar como eu acesso app1 e app2 . Eu gostaria de acessá-los por http://app1.my.server.com e http://app2.my.server.com enquanto ainda mantém a força ssl e fazendo proxy_pass

Quais alterações de configuração eu preciso fazer para que isso entre em vigor? Além disso, gostaria de manter as configurações para cada aplicativo em seu arquivo separado.

    
por Anthony 21.07.2016 / 03:23

1 resposta

0

Isso deve ser bem fácil. Você só precisa criar blocos de servidores para cada subdomínio, obter um certificado SSL para o subdomínio (a menos que o certificado principal seja um certificado curinga) e copiar os blocos de local aplicáveis com alguns ajustes.

Algo como isso deve funcionar, embora eu não tenha testado, então quase certamente precisará de alguns ajustes.

server {
  listen 80;
  server_name app1.server.com;
  return 301 https://app1.server.com/$request_uri; #force https
}

server {
  listen 443;
  ssl on;
  ssl_certificate /etc/ssl/app1.server.com/cert.pem; # changed
  ssl_certificate_key /etc/ssl/app1.server.com/priv.pem; # changed
  server_name app1.server.com; # changed

  location / { # changed
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Host $host;
        proxy_set_header X-Forwarded-Server $host;
        proxy_set_header X-Forwarded-Proto https;
        proxy_pass http://app1_servers/app1;
        proxy_redirect http://$host https://$host;
        proxy_set_header Host $host;
  }
    
por 21.07.2016 / 04:34