Proxy reverso transparente Nginx para https e http para outro servidor

1

Eu pesquisei isso por um tempo, mas os casos de uso que os outros perguntaram são mais complexos / diferentes do que estou tentando alcançar.

Eu tenho páginas de veiculação do Nginx nas duas portas 80 e 443 do site, por exemplo, example1.com. Funciona bem servindo http e https. Agora tenho um segundo servidor na minha rede interna executando o Apache. Isto é para um segundo site chamado, digamos example2.com. Eu tenho um único endereço IP wan com os registros A de ambos os sites apontando para ele.

Meu roteador encaminha as portas 80 e 443 para o servidor nginx. Eu gostaria que o Nginx pudesse verificar se a solicitação era para example1.com ou example2.com e enviar example1.com, como agora, para si mesmo, mas apenas repassar todo o tráfego de example2.com para o servidor Apache. Como tenho todos os certificados ssl configurados corretamente no servidor Apache example2.com, espero que o Nginx passe tudo de forma transparente para o Apache. Eu acho que preciso de passagem de proxy. Eu também preciso configurar o mesmo certs no Nginx ou passar tudo transparentemente para o servidor apache da mesma forma como se eu tivesse encaminhado a porta 443 diretamente para ele? Uma configuração sugerida seria apreciada.

    
por Jodel 03.02.2016 / 18:34

1 resposta

2

Você simplesmente precisa de um novo bloco de servidor com o server_name definido para o segundo domínio e um proxy_pass no local. Se você precisar que ele seja https, você poderá listar outro certificado ou o mesmo certificado se ele tiver os nomes alternativos corretos. Isso é abordado no guia para iniciantes do Nginx.

server {
  server_name example.com;
  listen 80;
  listen 443 ssl http2;

  ssl_certificate /var/lib/acme/certs/xyz/fullchain;
  ssl_certificate_key /var/lib/acme/certs/xyz/privkey;

  # Set up preferred protocols and ciphers. TLS1.2 is required for HTTP/2
  ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
  ssl_prefer_server_ciphers on;
  ssl_ciphers ECDH+AESGCM:ECDH+AES256:ECDH+AES128:DH+3DES:!ADH:!AECDH:!MD5;

  # This is a cache for SSL connections
  ssl_session_cache shared:SSL:5m;
  ssl_session_timeout 60m;

  location / {
    proxy_pass http://example.com;
  }
}
    
por 03.02.2016 / 19:15