HTTP e HTTPS Apache redirecionam para a máquina virtual IP interna

1

Aqui está minha configuração básica:

80 e 443 da porta de encaminhamento de roteador para o Ubuntu Server 14.04 executando o apache. Funciona muito bem.

Execução de várias máquinas virtuais (QEMU / KVM) no servidor Ubuntu. As VMs estão no modo em ponte, portanto, elas têm seu próprio endereço IP interno.

Eu gostaria de redirecionar todo o tráfego de subdomínio para a VM para tratamento.

Ex:

sub1.example.com - > VM1

sub2.example.com - > VM2

sub3.example.com - > VM3

Eu gostaria de encaminhar solicitações SSL para a VM para manipulação.

Atualmente estou recebendo erros de redirecionamento ou erros de SSL, independentemente do que eu tentei. Eu consigo fazer o não-ssl funcionar, mas não tenho certeza de como configurar o servidor Ubuntu para manipular e encaminhar solicitações de HTTP e HTTPS.

Editar:

Aqui estão os meus arquivos atuais de hosts virtuais:

<VirtualHost *:80>
    ServerName sub1.example.com
    ProxyPreserveHost On
    ProxyPass / http://192.168.1.78/
    ProxyPassReverse / http://192.168.1.78/
</VirtualHost>

<VirtualHost *:443>
    ServerName sub1.exmaple.com
    ProxyPreserveHost On    
    ProxyPass / http://192.168.1.78/
    ProxyPassReverse / http://192.168.1.78/
</VirtualHost>

Eu sei que isso não está correto, mas não sei como fazê-lo. O servidor principal receberá uma solicitação do link e do link

Editar 2:

Esqueci de mencionar que tenho este trabalho para não-ssl usando isto:

<VirtualHost *:80>
  ServerName zab.example.com # this forwards to my zabbix VM
  ProxyPreserveHost on
  ProxyPass / http://192.168.1.64/
  ProxyPassReverse / http://192.168.1.64/
</VirtualHost>

Recebe solicitações de entrada para zab.example.com e as encaminha para minha VM do Zabbix em 192.168.1.64. Portanto, os redirecionamentos da porta 80 para VMs estão funcionando bem.

Obrigado por qualquer ajuda!

Editar 3:

Ainda estou sentindo falta de algo (novamente, sou um novato :))

Aqui estão todos os meus anfitriões virtuais:

WAN - > 192.168.1.66 (servidor principal)

<VirtualHost *:80>
   ServerName file.example.com
   redirect permanent / https://file.example.com/
</VirtualHost>

<VirtualHost *:443>
 ServerName file.example.com
 SSLEngine On
 SSLCertificateFile /home/js/Seafile/file_ws_ee.crt
 SSLCertificateKeyFile /home/js/Seafile/file.example.com.key
 SSLCertificateChainFile /home/js/Seafile/GeoTrustDVSSLCAG4.cer
 SSLProxyEngine On
 ProxyPreserveHost off
 ProxyRequests off
 ProxyPass / http://file.example.com/
 ProxyPassReverse / http://file.example.com/
</VirtualHost>

VM interna 192.168.1.78 (executando o Seafile)

<VirtualHost *:80>
   ServerName file.example.com
   redirect permanent / https://file.example.com/
</VirtualHost>

<VirtualHost *:443>
  ServerName file.example.com
  DocumentRoot /var/www
  Alias /media  /home/js/Seafile/seafile-server-latest/seahub/media

  SSLEngine On
  SSLCertificateFile /home/js/Seafile/file_ws_ee.crt
  SSLCertificateKeyFile /home/js/Seafile/file.example.com.key
  SSLCertificateChainFile /home/js/Seafile/GeoTrustDVSSLCAG4.cer

  RewriteEngine On

    <Location /media>
        Require all granted
    </Location>

  #
  # seafile fileserver
  #
  ProxyPass /seafhttp http://127.0.0.1:8082
  ProxyPassReverse /seafhttp http://127.0.0.1:8082
  RewriteRule ^/seafhttp - [QSA,L]

  #
  # seahub
  #
  RewriteRule ^/(media.*)$ /$1 [QSA,L,PT]
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteRule ^(.*)$ /seahub.fcgi/$1 [QSA,L,E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
</VirtualHost>

A execução do arquivo wget file.example.com resulta em:

HTTP request sent, awaiting response... 301 Moved Permanently
Location: https://file.example.com/ [following]
20 redirections exceeded.

Pensamentos?

    
por Jon S. 17.01.2016 / 19:09

2 respostas

1

Tentar ter o apache passando SSL para outro servidor que serve SSL é mais problemático do que vale a pena. Você é melhor tê-lo tratado no servidor apache principal. É mais fácil assim. Aqui está um exemplo do que eu fiz para um dos meus cinco subdomínios. Eu tirei todas as opções extras de configuração que não são relevantes para sua pergunta.

<VirtualHost *:80>
    ServerAdmin [email protected]
    ServerName sentinel.example.net
    ServerAlias sentinel
    RewriteEngine On
    RewriteRule ^(.*) https://%{HTTP_HOST}/$1
</VirtualHost>

<VirtualHost *:443>
    # SSL
    SSLEngine On
    SSLCertificateFile /etc/pki/tls//web/sentinel.pem
    SSLCertificateKeyFile /etc/pki/tls/web/sentinel.key
    SSLCertificateChainFile /etc/pki/tls/startssl/startssl.pem
    # Basics
    ServerAdmin [email protected]
    ServerName sentinel.example.net
    ServerAlias sentinel
    # Proxy
    ProxyPreserveHost Off
    ProxyRequests off
    SSLProxyEngine On
    ProxyPass / http://sentinel.example.net/ timeout=60
    ProxyPassReverse / http://sentinel.example.net/ timeout=60
</VirtualHost>
    
por 17.01.2016 / 19:29
0

Você precisa substituir o nome do host pelo endereço IP da sua máquina virtual, se não tiver seu próprio servidor dns. Se você usar um nome de host, o apache resolverá e substituirá o nome do host na inicialização por seu endereço IP. Se não houver um servidor dns local, isso criará um loop, já que o apache usará um servidor dns público que resolve o nome do host para o seu ip público e enviará o pedido http de volta para si mesmo.

Se você não tiver um servidor de DNS local e não quiser configurar um, apenas substitua o nome do host pelo endereço IP da máquina virtual. Isso também acelerará o apache na inicialização, já que não precisa resolver os nomes do DNS.

Então, o seu host virtual deve ser parecido com isso

<VirtualHost *:80>
    ServerName file.example.com
    redirect permanent / https://file.example.com/
</VirtualHost>

<VirtualHost *:443>
   ServerName file.example.com
   SSLEngine On
   SSLCertificateFile /home/js/Seafile/file_ws_ee.crt
   SSLCertificateKeyFile /home/js/Seafile/file.example.com.key
   SSLCertificateChainFile /home/js/Seafile/GeoTrustDVSSLCAG4.cer
   SSLProxyEngine On
   ProxyPreserveHost on
   ProxyRequests off
   ProxyPass / http://192.168.1.78/
   ProxyPassReverse / http://192.168.1.78/
</VirtualHost>
    
por 14.10.2016 / 14:19