2009-07-27 29 views
8

Lo que estoy tratando de lograr es la siguiente: Quiero tener numerosos subdominios como abc.domain.com redirigir a un enlace como www.domain.com/something?subdomain=abcComodín subdominio (con proxy inverso) en Apache 2.2.3

Dado que estoy redireccionando a un dominio completamente calificado, necesitaba usar un proxy inverso para evitar el cambio de la URL en el navegador. (Utilizando el [P] de la bandera y encender el módulo mod_proxy y algunos otros módulos)

Esta es mi configuración DNS

*.domain.com. 14400 A 111.111.11.1 

Esta es la configuración de mi host virtual para Apache

<VirtualHost 111.111.11.1:80> 
    ServerName www.domain.com 
    ServerAlias *.lionite.com 
    DocumentRoot /var/www/html 
    ErrorLog /var/www/logs 
    UseCanonicalName off 

RewriteEngine on 
RewriteCond %{REQUEST_URI} !^/images 
RewriteCond %{HTTP_HOST}  !^www\.domain\.com$ 
RewriteRule ^(.+)  %{HTTP_HOST}$1   [C] 
RewriteRule ^([^.]+)\.domain\.com(.*) http://www.domain.com/something?subdomain=$1 [P,L] 

Esta configuración está funcionando bien (Avísame si cree que se puede mejorar por supuesto).

Mi principal problema es cuando estoy tratando de https configuración: //

Esta es mi configuración de host virtual para Apache

<VirtualHost 111.111.11.1:443> 
ServerName www.domain.com:443 
ServerAlias *.domain.com 
DocumentRoot /var/www/html 

SSLEngine on 
SSLProtocol all -SSLv2 
SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW 
SSLCertificateFile /etc/httpd/conf.d/cert/server.crt 
SSLCertificateKeyFile /etc/httpd/conf.d/cert/server.key 

<Directory "/var/www/cgi-bin"> 
    SSLOptions +StdEnvVars 
</Directory> 

SetEnvIf User-Agent ".*MSIE.*" \ 
     nokeepalive ssl-unclean-shutdown \ 
     downgrade-1.0 force-response-1.0 

CustomLog logs/ssl_request_log \ 
      "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b" 

    RewriteEngine on 
    RewriteCond %{REQUEST_URI} !^/images 
    RewriteCond %{HTTPS_HOST}  !^www\.domain\.com$ 
    RewriteRule ^(.+)  %{HTTPS_HOST}$1   [C] 
    RewriteRule ^([^.]+)\.domain\.com(.*) https://www.domain.com/something?subdomain=$1 [P,L] 

</VirtualHost> 

Siempre que llamo https://abc.domain.com - la respuesta que estoy recibiendo es la página de inicio, sin importar lo que agregue al final del subdominio, recibiré la misma respuesta. Es como si la reescritura no respondiera bien.

Cualquier ayuda se agradece, o si usted podría compartir cómo te configuración de proxy inverso, regrabar subdominio comodín y SSL todos juntos

Gracias,

+0

Esta pregunta cabría más en serverfault.com –

+0

He publicado esta pregunta en serverfault.com, no habiendo recibido respuestas, decidí publicar aquí también. –

Respuesta

1

He tenido este mismo problema también. La única forma en que lo resolví fue poner diferentes dominios que necesitan conexión segura en diferentes puertos de escucha porque estaba limitado con direcciones IP.

Desde mi entender, el problema es que en el protocolo https el HOST no está incluido en la solicitud. Entonces, cuando la solicitud llega al servidor, apache simplemente usa la primera coincidencia en la IP y el puerto en que se recibió la conexión porque no conoce el dominio desde el que se solicitó.

La única solución para esto es tener una dirección IP diferente para cada dominio o un puerto diferente.

Lamentablemente, no está de suerte el uso de https con una configuración de dominio comodín, no creo que haya forma de hacerlo funcionar.

+0

Intentando hacer algo similar y encontré esta respuesta. Yo creo que PUEDE hacerse. El encabezado HOST se envía en cada solicitud, pero donde esto se convierte en un problema es con hosts virtuales basados ​​en nombre. La capa SSL se debe tratar primero y luego apache puede acceder al encabezado Host. Esto significa que no puede tener hosts virtuales basados ​​en nombre con SSL. Pero debería poder hacer lo que Adam quiere con los redireccionamientos, ya que la capa SSL ya se ha procesado y el encabezado Host estará disponible para las directivas de reescritura.No vi la mención de HTTPS_HOST en los documentos, por lo que tal vez HTTP_HOST se debe utilizar? – kbosak

Cuestiones relacionadas