2009-07-27 23 views
8

Quello che sto cercando di realizzare è la seguente: voglio avere numerosi sottodomini quali abc.domain.com reindirizzare a un URL come www.domain.com/something?subdomain=abccreazione di jolly sottodominio (con reverse proxy) su Apache 2.2.3

Poiché sto reindirizzando a un dominio completo, ho dovuto utilizzare un proxy inverso per evitare la modifica dell'URL nel browser. (Utilizzando il Flag [P] e accendere il modulo mod_proxy e alcuni altri moduli)

Questa è la mia configurazione DNS

*.domain.com. 14400 A 111.111.11.1 

Questa è la configurazione host virtuale per 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] 

Questa configurazione funziona correttamente (fatemi sapere se pensate di poterlo migliorare ovviamente).

Il mio problema principale è quando sto cercando di https di configurazione: //

Questa è la mia configurazione dell'host virtuale per 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> 

Ogni volta che io chiamo https://abc.domain.com - la risposta che sto ottenendo è la home page, ma non importa cosa sto accodando alla fine del sottodominio, otterrò la stessa risposta. È come se la riscrittura non rispondesse bene.

Qualsiasi aiuto sarebbe apprezzato, o se si potrebbe condividere come si sarebbe messa a punto proxy inverso, riscrivere, sottodominio jolly e SSL tutti insieme

Grazie,

+0

Questa domanda si adatterebbe meglio su serverfault.com –

+0

Ho postato questa domanda su serverfault.com, non avendo ricevuto risposte ho deciso di postare anche qui. –

risposta

1

Ho avuto questo stesso problema pure. L'unico modo per risolverlo era di mettere domini diversi che necessitavano di una connessione sicura su diverse porte Listen perché ero limitato agli indirizzi IP.

Dal mio punto di vista, il problema è che nel protocollo https l'HOST non è incluso nella richiesta. Quindi, quando la richiesta raggiunge il server, apache utilizza solo la prima corrispondenza sull'IP e la porta su cui è stata ricevuta la connessione perché non conosce il dominio da cui è stata richiesta.

L'unico modo per aggirare questo è avere un IP diverso per ogni dominio o una porta diversa.

Sfortunatamente non si è in grado di utilizzare https con un'impostazione di dominio con caratteri jolly, non credo ci sia comunque modo di farlo funzionare.

+0

Cercando di fare qualcosa di simile e trovato questa risposta. Credo che si possa fare. L'intestazione HOST viene inviata su ogni richiesta, ma laddove questo diventa un prob è w/host virtuali basati sul nome. Il layer SSL deve essere trattato prima e poi apache può accedere all'intestazione Host. Ciò significa che non puoi avere virtualhosts basati sui nomi con SSL. Ma dovresti essere in grado di fare ciò che Adam vuole con i reindirizzamenti, dal momento che il layer SSL è già stato elaborato e l'intestazione Host sarebbe disponibile per le direttive di riscrittura.Non ho visto menzionare HTTPS_HOST nei documenti, quindi potrebbe essere usato HTTP_HOST? – kbosak

Problemi correlati