Domanda

Correlato ad alcune delle mie domande precedenti.

Ora ho una configurazione che mi piace molto;

Apache httpd in ascolto sulla porta 80 accetta connessioni http e https. Diverse istanze Tomcat in esecuzione su diverse porte AJP.

Mod_Jk sta inviando diverse richieste di URL a diverse istanze di Tomcat;

www.mydomain.com/demo -> tomcat:8101
www.mydomain.com/test -> tomcat:8102
www.mydomain.com/     -> tomcat:8100

Ciò si ottiene con la seguente configurazione in httpd.conf (o file secondari inclusi);

LoadModule jk_module modules/mod_jk.so
JkWorkersFile conf/workers.properties
JkLogFile logs/mod_jk.log
JkLogLevel info

NameVirtualHost *:80

<VirtualHost *:80>
    JkMount /demo* demoTomcat (workers.properties not shown)
    JkMount /test* testTomcat
    JkMount /* rootTomcat
</VirtualHost>

E tutto funziona alla grande. Ho anche configurato SSL e funziona per connessioni https utilizzando un tag VirtualHost simile;

<VirtualHost _default_:443>
    JkMount /demo* demoTomcat 
    JkMount /test* testTomcat
    JkMount /* rootTomcat
... SSL Stuff follows ....

Quello che sto riscontrando ora è che il mio certificato SSL è solo per www.miodominio.com e NON miodominio.com.

Mi è stato consigliato di utilizzare le seguenti chiamate mod_rewrite;

Options +FollowSymlinks
LoadModule rewrite_module modules/mod_rewrite.so
RewriteEngine On
RewriteCond %{HTTP_HOST} !^(www\.|$) [NC]
RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [PT,L]

Li ho inseriti prima e dopo le regole mod_jk nel file httpd.conf. All'inizio Apache si lamentava del fatto che RewriteEngine fosse un comando non valido, ma questo è andato via quando ho ricordato prima il comando LoadModule :) Ora Apache si riavvia bene, il server si avvia e accetta le richieste e tutto funziona come prima ... solo questo, questi comandi mod_rewrite sembrano non avere effetto?

Digito http://mydomain.com nel browser e ottengo il mio sito Web normalmente. L'URL non sembra cambiare in http://www.mydomain.com e quando inizio ad accedere alle aree protette ricevo avvisi che mydomain.com NON è protetto e mi sta fornendo un certificato da qualche altro sito web chiamato www.mydomain.com (perché questo è un problema e può farlo " Basta usare un po 'di logica per realizzare che è lo stesso sito, non lo so!).

Sto inserendo le regole mod_rewrite nel posto sbagliato? Ho letto che dovrebbe funzionare, le riscritture dovrebbero cambiare l'URL in www. e poi passare alla roba mod_jk per qualcosa di più?

È stato utile?

Soluzione

Inserisci questo snippet subito dopo l'ultima riga di jkmount nella tua configurazione di apache:

    <IfModule mod_rewrite.c>
        RewriteEngine On
        RewriteCond %{HTTPS} =on
        RewriteCond %{HTTP_HOST} !^www\.example\.name$ [NC]
        RewriteRule ^ https://www.example.name%{REQUEST_URI} [NE,L,R=301]
    </IfModule>

Ciò che questa regola fa è SE lo schema è https e il tuo host http NON www.mydaomain.com ALLORA reindirizza la richiesta https://example.com/foo a https://www.example.com/foo con 301stato http.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top